如何加载与html混合的javascript

时间:2009-03-22 21:49:15

标签: javascript iframe

所以我需要从远程页面中提取一些javascrit,该页面具有(无用的)html与(有用的)javascript相结合。调用它的页面http://remote.com/data.html看起来像这样(我知道的很疯狂):

<html>
<body>
<img src="/images/a.gif" />
<div>blah blah blah</div><br/><br/>
var data = { date: "2009-03-15", data: "Some Data Here" };

</body>
</html>

所以,我需要在我的本地页面加载这个数据变量并使用它。

我完全可以使用完整的客户端代码。我想,如果我能把这个页面的html变成一个本地javascript变量,我可以解析javascript代码,运行eval并且很好地使用数据。所以我想在iframe中加载远程页面,但我似乎无法在dom中找到iframe。为什么不呢?:

<script>
alert(window.parent.frames.length);
alert(document.getElementById('my_frame'));
</script>

<iframe name="my_frame" id='my_frame' style='height:1px; width:1px;' frameBorder=0 src='http://remote.com/data.html'></iframe>

第一个警报显示0,第二个空值,这没有任何意义。我怎样才能解决这个问题呢?

2 个答案:

答案 0 :(得分:2)

您是否尝试过切换订单 - 例如iframe,下一个脚本?该脚本在将iframe插入DOM之前运行。

此外,这在类似的情况下对我有用:给iframe一个onload处理程序:

<iframe src="http://example.com/blah" onload="do_some_stuff_with_the_iframe()"></iframe>

最后但同样重要的是,请注意跨站点脚本问题 - 可能会加载iframe,但可能不允许您的JS访问它。

答案 1 :(得分:0)

一种选择是使用XMLHttpRequest来检索页面,尽管目前仅针对跨站点请求实现了apparently

据我所知,你可能想制作一个使用客户端的互联网连接来检索html页面的工具(出于安全或法律原因),所以这是一个合法的希望。

如果你最终需要在服务器端进行,那么可能是一个简单的php页面,它将一个url作为查询并返回一个包含字符串中脚本的json块。这样,如果您确实发现需要过滤掉某些网站,则只需在一个地方执行此操作。

不可避免的问题是,某些用户会产生敌意,然后他们有权滥用有效的javascript代理。因此,最安全的选项可能是在服务器上进行所有处理,而不允许某些javascript函数调用(eval,http请求等)。