7

将 javascript 变量中保存的值传递给同一 html 页面上的 iframe 调用的最佳方法是什么?我正在尝试通过将广告投放 javascript 代码(典型的document.write('<script type="text/javascript" src="..")移动到单独的 iframe 中来改善我网站的页面响应时间。(基于此贴

对广告服务器的请求通常需要一个种子变量,每个站点声明一次,并在客户端每次加载页面时递增。我想要做的是将种子变量传递到我的 iframe 部分调用的文档中。

种子变量在我的主 html 文档的“head”标签中初始化:

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

稍后在 html 文档中,我通过 iframe 发出请求,该 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>

'somepage.html' 中返回的 html 有一个用于调用广告服务器的脚本,需要使用之前声明的种子变量作为参数:

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

实现这一目标的好方法是什么?

4

3 回答 3

12

将值直接传递到具有不同域的页面的 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('&'));
}
于 2010-04-12T21:36:39.270 回答
1

这是一个简洁的解决方法,没有丑陋的 url 变量。虽然您不能将变量发送到 iframe,但您可以调用函数来运行。

首先在目标页面中编写一个函数来接收和设置变量:

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

然后您需要做的就是从原始页面调用该函数:

<script type="application/javascript">
    document.getElementById("IframeID").contentWindow.variable("value");
</script>
于 2019-02-06T02:22:05.383 回答
0

获取 iframe 文件中的值的简单方法:

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

并使用echo php $_GET['seed'];

昏迷元素内部;

于 2012-12-11T12:01:17.410 回答