2013-10-10 2 views
0

Я пишу код для Greasemonkey и у меня есть IFRAME без src, в котором я добавить такой код:не может вызывать функцию в тот же домен IFRAME в Firefox

var appendToHead = function(iframe, content) { 
    var doc = iframe[0].contentWindow.document; 
    var element = doc.createElement('script'); 
    element.type = 'text/javascript'; 
    element.text = content; 
    doc.head.appendChild(element); 
}; 


я вижу в Firebug что функция добавляется в iframe. Но когда я пытаюсь их получить, EG frames[0].contentWindow.functionName Я получаю undefined и все еще вижу их в отладчике.

Прежде, чем я использовал Greasemonkey, этот подход работал хорошо. Как вызвать эти функции?

+0

Возможный дубликат [Как получить доступ к javascript iframe из имени пользователя?] (Http://stackoverflow.com/questions/11638595/how-do-i-access-an-iframes-javascript-from-a- usercript) –

ответ

1

См. How do I access an iframe's javascript from a userscript.

Вы должны были бы вызвать функцию: frames[0].functionName();, но это должен быть код и код, а не область сценария Greasemonkey. (За исключением того, что @grant noneможет работы в некоторых случаях.)

Вам также может потребоваться задержка, в зависимости. Опубликуйте полный рабочий пример того, что вы делаете.

+0

Итак, без @grant нет никакого способа я могу вызвать функцию из области сценария Greasemonkey? И зачем нужна задержка? – Suhan

+0

И если я не хочу использовать api с грантом none, как я могу загрузить большие файлы css (если не делать большую строку)? – Suhan

+0

Правильно, вы не можете вызывать функции из сценария скрипта Greasemonkey без '@grant none' - что я не рекомендую. Внесите код. Бит CSS не ясен. Может потребоваться задать еще один вопрос. –

Смежные вопросы