2015-04-04 2 views
0

Если бы у меня была страница, такая как index.php, а затем должна была включать iframe, но в iframe отсутствовал JavaScript, который был включен в файл index.php; будет ли JavaScript активировать функции JavaScript в iframe или требуется, чтобы они были на одной странице?iframe и JavaScript на разных страницах

Пример:

Index.php:

<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script> 
<script type="text/javascript" src="http://example.com/js/jquery.jplayer.min.js"></script> 

Включает оба следующего кода, в то время как IFrame требует от них, но не имеет его в списке на этой странице.

+0

Вы должны ссылаться на скрипты на странице, загружаемой iframe. И объясните немного больше ... Вам нужен доступ к функциям скрипта на странице, загруженной iframe? – Legends

+0

@legends Есть ли какой-либо возможный способ, которым я могу достичь, что я пытаюсь сделать? Потому что для задачи, над которой я работаю, это не сработает, если я не смогу сделать это возможным, как – Lee

+1

Пожалуйста, объясните, что вы хотите сделать более подробно. Также важно знать, будет ли iframe одним и тем же доменом или нет. – charlietfl

ответ

1

Среда JavaScript на главной странице и iframe является отдельной, но если они исходят от same origin, они могут разговаривать друг с другом.

Это означает, что у вас есть два варианта:

  1. Include скриптов в HTML как для главной страницы и фрейма; это простейший

  2. Если они в то же происхождение, главная страница может сделать его функции, доступные в среде IFrame как это (предположим functionName является функцией на главной странице):

    theIframe.contentWindow.functionName = functionName; 
    

    Это разделяет functionName с iframe (что делает его глобальной функцией в iframe). Обратите внимание: functionName все еще находится в среде главной страницы, так, например, в коде этой функции document будет ссылаться на документ главной страницы, а не на iframe.

+0

Большое спасибо! Это очень помогло и решило мою проблему, и я рад, что кто-то под этим понимает, что я пытаюсь сказать как можно меньше слов. – Lee

+0

@Lee Да. Я как-то сделал это с jquery, IIRC: 'iframe onload =" if (typeof $! = 'Undefined') this.contentWindow. $ = $; If (typeof jQuery! = 'Undefined') this.contentWindow.jQuery = jQuery; ". Это устраняет необходимость включения одного и того же файла .js в iframes. Хотя я буду держать пари, есть некоторые случаи, когда это может закончиться неудачей. (Например, если вы делаете что-то очень специфичное для контекста или до того, как начнется перезагрузка onload). –

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