3

我有一个完全在服务器端呈现的网页(nodejs+phantomjs),我想将此页面发送到客户端浏览器。问题是客户端浏览器尝试重新执行 javascript。因此,我有两个选择:

  1. 禁用在客户端加载该页面的 iframe 中的 javascript
  2. 从页面中剥离每个 javascript 和 js 调用/事件

虽然我不会使用页面的原始 javascript,但我稍后需要能够将 javascript 事件添加到 iframe。

似乎第一个选项可以通过使用 iframe 'sandbox' 参数来实现。但这会阻止我以后注入其他 javascript。因此,我需要一种方法来实现第二个选项,即从页面中删除所有原始 javascript。

有没有一种有效(可靠)的方法来做到这一点?我想使用正则表达式可能是一个解决方案,但它可靠吗?

4

1 回答 1

4

我找到了一个似乎有效的解决方案。我不确定它是不是最好的解决方案,但它肯定比手动从文档中删除任何 JS 引用要好。就我的目的而言。

诀窍是:劫持 js!我只是在<head>以下内容之前添加:

<script>
    Function.prototype.call = function(){}; 
    Function.prototype.apply = function(){};
    Function.prototype.bind = function(){};
</script>"

并且 JavaScript 被禁用。

于 2013-06-20T18:39:50.927 回答