【问题标题】:javascript code remove itself after being runjavascript代码在运行后自行删除
【发布时间】:2013-06-13 00:57:28
【问题描述】:
<script>
   ....
</script>

完成任务后如何从页面中删除java脚本?

谢谢

【问题讨论】:

  • 我不确定,您可以在代码执行时删除代码。
  • 为什么要删除它?不需要的时候可以解绑事件/函数..
  • 理论上你可以从 DOM 中删除它,但它仍然会在页面源中。 Javascript 在客户端执行,因此根据定义,用户已经拥有它的副本。
  • 即使您从 CTRL+U 页面中删除 HTML,用户也只需按 F12 并从 Firebug/开发工具中复制表格。
  • 那就学Ajax,去掉JS代码比AJAX难...

标签: javascript html


【解决方案1】:

我真的不认为删除 JavaScript 有什么意义,但这是可能的。为脚本元素提供一个 ID 以便于选择。然后将处理删除的代码放在单独的脚本元素中。

鉴于您不想删除的代码不是异步的,这样可以做到:

<script id="foo">
    // Do your stuff here, create the table or whatever necessary
</script>

<script>
(function () {
    var node = document.getElementById("foo");
    if (node.parentNode) {
      node.parentNode.removeChild(node);
    }
})();
</script>

Demo

更新:

正如 Juhana 在 cmets 中指出的那样,这将从 DOM 中删除脚本元素,但如果您查看页面的实际源,脚本元素仍然可见。

【讨论】:

  • 如 cmets 中所述,这“有效”但几乎为零。 JavaScript 已经运行,浏览器的“查看源代码”显示的是 原始 HTML,而不是当前的 DOM。
  • 非常感谢。这就是我要找的。它适用于萤火虫。但仍由 ctrl+U 显示。现在我怀疑我正在寻找的东西在理论上是否可行。
  • 在 Ubuntu Os 和 localhost 上由 firefox 21.0 运行,它向我显示了 foo 区域。
  • 最好与“安德森”的解决方案相结合。不幸的是,我对此答案的编辑没有得到版主的批准。
【解决方案2】:

您可以删除脚本元素或执行任何其他操作,但用户仍然可以通过调试模式获取表格。有一些方法可以加密你的源代码,试试:http://jsobfuscate.com/

【讨论】:

    【解决方案3】:

    也许您可以通过禁用网页中的复制和粘贴功能让它变得困难:

    <script type="text/JavaScript">
    function killCopy(e){
    return false
    }
    function reEnable(){
    return true
    }
    document.onselectstart=new Function ("return false")
    if (window.sidebar){
    document.onmousedown=killCopy
    document.onclick=reEnable
    }
    </script>
    

    见http://www.boogiejack.com/no_copy_paste.html

    但是用户仍然可以得到它,因为他们已经在本地机器上拥有了 html 的副本

    【讨论】:

    • 谢谢,但这里的讨论是关于从源代码而不是从页面劫持代码。(我不是投反对票的人)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-28
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多