iframe에서 일부 작업을 수행해야하는 스크립트를 작성하고 있습니다. 내가 소유하지 않은 사이트의 사용자 스크립트입니다. 따라서 도메인 간 문제로 인해 iframe
의 src
을 내 코드가있는 페이지로 설정할 수는 없습니다. 대신 동적으로 iframe을 작성합니다. iFrame에서 jQuery를로드하십시오.
function childScripts(){
//Stuff that must be injected into the iframe.
//Needs jQuery
}
//because I'm lazy:
var iframeWin=$('#my-iframe')[0].contentWindow;
//Load jQuery:
var script = iframeWin.document.createElement("script");
script.type = "text/javascript";
script.src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"
iframeWin.document.head.appendChild(script);
//Inject script
var script = iframeWin.document.createElement("script");
script.type = "text/javascript";
script.textContent="("+childScripts.toString()+")()";
iframeWin.document.body.appendChild(script);
지금, 주입 된 스크립트가 jQuery를 필요가 이렇게하려면,하지만 어떤 이유로, jQuery를이 주입 된 스크립트가 실행될 때로드되지 않습니다 - jQuery를이 <head>
과의 경우에도 주사 된 스크립트는 <body>
입니다.
다른 해결 방법을 시도했습니다. 삽입 된 스크립트를 onload
으로 실행했습니다. 타임 아웃을 설정하고 jQuery의 존재 여부를 확인하는 아이디어가 마음에 들지 않아보다 세련된 솔루션을 선호합니다.
$
개체를 iframeWin.$
으로 복사 해 보았습니다. 물론 부모 개체로 역 참조하고 부모 문서를 조작하기 때문에 작동하지 않습니다.
은'asd'가 무엇을? – Manishearth
''asd ''를 무시하고 그것을 잊어 버릴 수 있습니다. 스크립트 태그를 삽입하기 전에 iframe을 테스트하는 데 사용했습니다. –
어떤 이유로 스크립트가 _all_에 추가되지 않습니다. 'load'를 제거하면 물건이 추가되지만 스크립트는 여전히 제거됩니다. O_0 – Manishearth