2013-02-14 2 views
0

Я немного noob на javascript, так что помогите мне. У меня это у основания моего тега:Javascript в iframe не exectuing

<iframe id="scriptFrame" name="scriptFrame" height="0" width="0"> 
<script type="text/javascript" language="javascript"> 
alert("Hello World"); 
parent.alert("Hello world"); 
function foo() 
{ 
    alert("Hello World"); 
} 
</script> 
</iframe> 

Ни одно предупреждение не всплывает. Что я делаю не так? Я попробовал добавить html и head теги, но это не помогло. Я также пытался делать document.getElementById ('scriptFrame'). ContentWindow.foo() и кадры [ 'scriptFrame']. Foo(), но ни работал

ответ

1

Содержимое iframe никогда не отображается. Когда вы указываете что-то внутри iframe, это резерв для содержимого, загруженного атрибутом src (для браузеров, которые не поддерживают iframe).

Так что либо используйте onload для iframe, либо помещайте содержимое iframe на отдельной странице и указываете его в атрибуте src.

+0

Вы верны. Спасибо вам и всем другим ответчикам! – ForeverNoobie

0

Вы должны <html> в IFRAME и <script> тег должен быть в <head> или в <body>.

Также обратите внимание, что атрибут language<script> устарел.

+0

Вы можете понизить его, но именно поэтому JS не выполняется. – marekful

+0

Кажется, я что-то пропустил, последний раз видел, как работает встроенный код между тегами iframe, был в IE5 или что-то в этом роде ... ??? Что именно здесь происходит? – Teemu

+0

Более того, @Bhushan Firake прав. Я упустил из виду тот факт, что вы пытаетесь добавить контент в свой iframe. Iframes должен иметь атрибут 'src' и вытаскивать документ. – marekful

0

Если вы пытаетесь запустить JavaScript, когда IFrame загружается, попробуйте следующее:

<html> 
    <head> 
     <script type="text/javascript"> 
      function someFunction(){ 
       //some stuff here 
      } 
     </script> 
    </head> 
    <body> 
     <iframe id="scriptFrame" name="scriptFrame" height="0" width="0" onload="someFunction();"></iframe> 
    </body> 
</html> 
2

Обратите внимание, что Вы не можете добавлять любой контент непосредственно в тега. Даже используя JavaScript, вы можете добавлять контент только в том случае, если страница в iframe относится к тому же домену, что и родительская страница. Таким образом, вы должны сделать следующее:

<html> 
<body> 
<script > 
function foo() 
{ 
    alert("Hello World"); 
} 
</script> 
<iframe id="scriptFrame" onload="foo()"name="scriptFrame" height="0" width="0"> 
</iframe> 
</body> 
</html> 

Вызовом родительской функции JS из фрейма можно, но только тогда, когда оба родителя и страница загружается в IFRAME находится из же домена т.е. а. com, и оба используют один и тот же протокол, то есть оба находятся либо на http: // или https: //.

Вызов потерпит неудачу в перечисленных ниже случаях:

  1. страница Родитель и страница IFrame взяты из другого домена.

  2. Они используют разные протоколы, один находится на http: //, а другой - на https: //.

Любое обходное решение для этого ограничения было бы крайне небезопасным.

Например, представьте, что я зарегистрировал домен superwinningcontest.com и отправил ссылки на электронные письма людей. Когда они загрузили главную страницу, я мог бы скрыть несколько фреймов там и прочитать их фид Facebook, проверить последние транзакции Amazon или PayPal, или - если они использовали услугу, которая не обеспечивала достаточную безопасность, - перевод денег из их Счета. Вот почему JavaScript ограничен одним и тем же протоколом.

1

Вы должны использовать атрибут src iframe с URI, где iframe будет загружать его содержимое.

Информация, которая будет вставлена ​​в строку, обозначается атрибутом src этого элемента.С другой стороны, содержимое элемента IFRAME должно отображаться только пользовательскими агентами, которые не поддерживают фреймы или не настроены на отображение фреймов.

У вас есть скрипт внутри тега iframe, поэтому он будет отображаться только в браузерах без поддержки фреймов.

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