如何获取脚本标记的innerHTML

时间:2010-11-08 23:17:54

标签: javascript html cross-domain innerhtml

好吧......我一直在寻找一个小时......如何获得脚本标签的innerHTML?这是我一直在做的......

<script type="text/javascript" src="http://www.google.com" id="externalScript"></script>
<script type="text/javascript">
function getSource()
 {document.getElementById('externalScript').innerHTML;
  }
</script>

我一直在尝试使用脚本标记调用另一个域的页面源。我见过一个有效的例子,但在我的生活中找不到它......

5 个答案:

答案 0 :(得分:3)

你做不到。没有innerHTML ....所有你能做的就是下拉文件视图XMLHttpRequest来获取它的内容....但是当然,这受到同源策略的限制,但脚本标签不是。遗憾。

答案 1 :(得分:0)

实际上,有一种获取内容的方法,但它取决于远程服务器,让您获得没有有效标头的文件,并且由于这些设置仍然会失败很多时间。使用jQuery,因为这是我一天的结束,我出门了......

$.get($('#externalScript').attr('src'), function(data) {
    alert(data);
});

答案 2 :(得分:0)

我猜你想要两件事之一:

  1. 要使JavaScript文件成为全局(以便其他页面可以调用它)

  2. 获取当前位于文件中的脚本

  3. 通过将脚本移动到.js文件,然后使用标记

    ,可以解决这两个问题
    <script src="[path-to-file]"></script>
    

答案 3 :(得分:-1)

你不能这样做。如果可以的话,这将是一个巨大的安全问题。

脚本内容可以包含任意数量的内容。请考虑这一点:从银行网站上的URL加载的脚本可能包含各种内容,例如您的帐号,余额和其他个人信息。该脚本将由银行的普通页面加载,以执行他们想要做的事情。

现在,我是一个邪恶的黑客,我怀疑你可能是Biggo银行的客户。因此,在我自己的一个页面上,我为Biggo Bank脚本添加了<script>标记。只有在有效的Biggo银行会话cookie时才会加载脚本,但是如果有的话会怎样?如果您在另一个浏览器选项卡中登录Biggo Bank时访问我的黑客站点,该怎么办?现在我自己的JavaScript代码可以读取该脚本的内容,而你的钱现在是我的:)

答案 4 :(得分:-2)

您可以使用Html解析器:

jsoup»jsoup:Java HTML Parser jsoup:Java HTML Parser

jsoup是一个用于处理真实HTML的Java库。它提供了一个非常方便的API,用于提取和操作数据,使用最好的DOM,CSS和类似jquery的方法。

参考: http://jsoup.org/