首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从urls列表中设置iframe src

从urls列表中设置iframe src
EN

Stack Overflow用户
提问于 2015-10-30 02:44:51
回答 3查看 898关注 0票数 0

我在动态设置iframe源时遇到了问题。我有一个带有n个iframe和img元素的页面,以及一个urls列表。我尝试使用for循环来设置每个iframe的/img的src属性。

我的html是这样的:

代码语言:javascript
复制
<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>

这是我尝试过的方法。我也尝试过:

代码语言:javascript
复制
<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选择器吗?或者我应该让元素在循环中查询?我尝试过一些不起作用的变种。

谢谢你的帮助

EN

回答 3

Stack Overflow用户

发布于 2015-10-30 02:50:10

由于安全原因,您指定的urls无法加载到iframe中,这些站点可防止clickjack攻击。点击攻击可以通过X-Frame-Options响应头,"X-Frame-Options“value=”拒绝“或"X-Frame-Options”value="SAMEORIGIN“来保护。通过此标头设置,所有标准网站都可以防止clickjack攻击。

票数 0
EN

Stack Overflow用户

发布于 2015-10-30 02:51:28

您的代码中有两个错误:

1)您正在将变量i设置为字符o。该行应为:

代码语言:javascript
复制
for (var i = 0; i < elements.length; i++)

2)您的iframe缺少http,因此正确的方法是将它们添加到数组中:

代码语言:javascript
复制
["http://www.google.com","http://www.yahoo.com","http://www.weather.com","http://www.bing.com","http://www.nytimes.com"]

修复这些错误后,您的脚本可以正常工作。

您必须注意,大多数流行的站点使用脚本或特殊的header字段来防止将它们包含在iframe元素中。这就是为什么这些特定的站点不可能在iframe中显示。

票数 0
EN

Stack Overflow用户

发布于 2015-10-30 02:58:54

目标?

我对你想要做的事情有点迷惑。看起来您在一个页面上有几个iFrames,并且您有一个URL数组,并且您希望用这些URL更新页面上的iFrames。

显而易见的问题

我在你的第一篇文章中观察到了一些明显的问题。首先,选择器"iframe, src"没有任何意义,因为没有"src"元素。如果您正在尝试选择具有src属性的任何内容,则可以使用如下选择器:"[src]"

其次,您的for循环不正确。您使用的是字母o而不是数字0。您的for循环应该如下所示:for (var i = 0; i < elements.length; i++)

最后,在将URL添加到iFrame时,您应该将其附加到URL。您还可以通过将URL设置为以下格式来使其与协议无关://www.google.com

建议

这种方法通常有点奇怪,因为每次想要向数组添加新链接时,都必须向页面添加额外的iframe。相反,为什么不简单地为每个URL插入一个新的iFrame?

编辑

正如另一位用户提到的,许多网站会阻止你将它们嵌入到iFrames中。例如,如果你注意到Google.com上的x-frame-options:SAMEORIGIN头,这是在告诉你的浏览器不应该在一个框架中显示网站,除非该框架是从相同的域提供的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33422268

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档