Я пишу сценарий, который требует, чтобы некоторые вещи выполнялись в iframe. Это usercript для сайта, который у меня нет, поэтому из-за проблем между доменами я не могу просто установить src
из iframe
на страницу с моим собственным кодом. Вместо этого я динамически строю iframe.Загрузить jQuery в iframe
Чтобы сделать это, у меня есть
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