передача значений javascript в тег iframe - PullRequest
7 голосов
/ 13 апреля 2010

Каков наилучший способ передать значение, содержащееся в переменной javascript, в вызов iframe на той же html-странице? Я пытаюсь улучшить время отклика страницы моего сайта, переместив код JavaScript для размещения объявлений (типичный document.write('<script type="text/javascript" src="..") в отдельный фрейм. ( На основании этого сообщения )

Для запроса к рекламному серверу обычно требуется начальная переменная, объявленная один раз для сайта и увеличивающаяся при каждой загрузке страницы клиентом. Я хочу передать переменную seed в документ, вызванный моим разделом iframe.

Переменная seed инициализируется в теге 'head' моего основного HTML-документа:

<head>
    <script type="text/javascript">
    <!--
    custom_seed=1;  
    //-->
    </script>
</head>

Позже в html-документе я делаю запрос через iframe, который возвращает html, необходимый для вызова рекламного сервера.

<body>
<!-- a bunch of html to display the page -->
<iframe src="somepage.html" width="100%" height="100%">
<p>No support for iframe</p>
</iframe>
</body>

HTML-код, возвращенный в файле somepage.html, содержит скрипт, используемый для вызова рекламного сервера, и должен использовать ранее объявленную переменную seed в качестве параметра:

<script type="text/javascript">
    document.write('<script type="text/javascript" src="http://ad.server.net/...seed='+ custom_seed  +'?"></script>');
    custom_seed++;
    </script>

Какой хороший способ добиться этого?

Ответы [ 3 ]

12 голосов
/ 13 апреля 2010

Только позволяет передавать значения непосредственно в iframe страницы с другим доменом через URL, как значения строки запроса, якоря или, возможно, некоторую форму переписывания. Даже если он находится в одном домене, это, вероятно, самый простой и безопасный способ его передачи.

Основной документ:

document.getElementById('IframeID').src = "somepage.html?seed=" + custom_seed;

Внутренний документ:

var seed = window.location.search.substring(window.location.search.indexOf('seed=') + 5);
if (seed.indexOf('&') >= 0) {
    seed = seed.substring(0, seed.indexOf('&'));
}
0 голосов
/ 06 февраля 2019

Вот хороший обходной путь без уродливых переменных URL. Хотя вы не можете отправлять переменные в iframe, вы можете вызвать функцию для запуска.

Начните с программирования функции на целевой странице для получения и установки переменной:

<script type="application/javascript">
    function variable(value) {
        var seed = value;
</script>

Тогда все, что вам нужно сделать, это вызвать функцию со страницы источника:

<script type="application/javascript">
    document.getElementById("IframeID").contentWindow.variable("value");
</script>
0 голосов
/ 11 декабря 2012

Простой способ получить значение в файле iframe:

  document.getElementById("youfiled").value="";

И используйте echo php $_GET['seed'];

внутри комы;

...