我无法动态设置iframe源代码。我有一个包含n个iframe和img元素的页面以及一个url列表。我正在尝试使用for循环设置每个iframe的/ img的src属性。
我的HTML就是这样:
<iframe id="iframe-1" width="400" height="300">iframe one</iframe>
<img width="400" height="300">image one</img>
<iframe id="iframe-2" width="400" height="300">iframe two</iframe>
<img width="400" height="300">image one</img>
<iframe id="iframe-3" width="400" height="300">iframe three</iframe>
这是我尝试过的。我也试过了:
<script type="text/javascript">
var sources = ["www.google.com","www.yahoo.com","www.weather.com","www.bing.com","www.nytimes.com"];
var elements = document.querySelectorAll("iframe, src");
for (var i = o; i < elements.length; i++)
{
elements[i].src = sources[i];
}
</script>
来源未显示在iframes / imgs中。是否有比querySelectorAll更好的DOM选择器?或者我应该在循环中有元素查询?我尝试过没有效果的变种。
感谢您的帮助
答案 0 :(得分:0)
出于安全原因,您指定的网址无法加载到iframe中,这些网站可以防止Clickjack攻击。 Clickjack攻击可以通过X-Frame-Options响应头保护,“X-Frame-Options”值=“DENY”或“X-Frame-Options”值=“SAMEORIGIN”。通过此标头设置,所有标准网站都可以防止点击攻击。
答案 1 :(得分:0)
您的代码中有两个错误:
1)您正在将变量i
设置为字符o
。该行应为:
for (var i = 0; i < elements.length; i++)
2)你的iframe遗失http
,所以正确的方法是将它们添加到数组中:
["http://www.google.com","http://www.yahoo.com","http://www.weather.com","http://www.bing.com","http://www.nytimes.com"]
修复这些错误后,您的脚本功能正常。
您必须注意,大多数热门网站都使用脚本或特殊的HTTP标头字段来阻止它们包含在iframe
元素中。这就是为什么这些特定网站无法在iframe中显示的原因。
答案 2 :(得分:0)
我对你要做的事情有点困惑。您在网页上看到了一些iFrame,并且您有一系列网址,并且您希望使用这些网址更新网页上的iFrame。
我在您的初始帖子中发现了一些明显的问题。首先,选择器"iframe, src"
没有意义,因为没有"src"
元素。如果您尝试选择具有src属性的任何内容,则可以使用如下选择器:"[src]"
。
其次,你的for循环不正确。您使用的是o
字母而不是数字0
。你的for循环应该如下所示:
for (var i = 0; i < elements.length; i++)
最后,在将网址添加到iFrame时,您应该将http://附加到您的网址。您还可以通过以下格式制作网址来使其与协议无关://www.google.com
这种方法通常有点奇怪,因为每次要向阵列添加新链接时,都必须向页面添加其他iframe。相反,为什么不简单地为每个URL插入一个新的iFrame?
正如另一位用户提到的,许多网站会阻止您将其嵌入iFrame中。例如,如果您在Google.com上注意到x-frame-options:SAMEORIGIN
标题,则表明它不会在一个框架中显示该网站,除非该框架是从同一个域提供的。