gpt4 book ai didi

javascript - 有没有办法尝试/捕捉来自给定 <script> 标签的任何 JS 噪音

转载 作者:行者123 更新时间:2023-12-03 08:50:29 26 4
gpt4 key购买 nike

我有错误s的情况通常是从 3rd-party JS 发出的,例如 Chartbeat 等。我想捕获并丢弃/静音这些错误以及相关的噪音。

所有此类 3rd 方脚本都会执行以下操作:

  • 创建 <script> DOM 标签
  • 为源设置属性等
  • 将其附加到 window
  • 可选:重写或 Hook window.onload调用初始化程序

  • 例如
    function loadChartbeat() {
    window._sf_endpt=(new Date()).getTime();
    var e = document.createElement('script');
    e.setAttribute('language', 'javascript');
    e.setAttribute('type', 'text/javascript');
    e.setAttribute('src', '//static.chartbeat.com/js/chartbeat.js');
    document.body.appendChild(e);
    }

    我怎么能 try/catch在这种情况下的错误?

    在处理 <script> 时,是否还有其他方法可以避免错误冒泡?这个模式的标签/负载?

    我尝试添加静音功能, like this :
    function stoperror() {
    return true;
    }
    function loadChartbeat() {
    window._sf_endpt=(new Date()).getTime();
    var e = document.createElement('script');
    e.setAttribute('language', 'javascript');
    e.setAttribute('type', 'text/javascript');
    e.setAttribute('src', '//static.chartbeat.com/js/chartbeat.js');
    e.onerror = stoperror;
    document.body.appendChild(e);
    }

    但错误继续冒泡。

    最佳答案

    最简单的方法是将其添加到服务器端。像这样:

    //loadscript.php
    <?php
    echo "try{";
    readfile($_GET["url"]);//bad style, may improve it
    echo "}catch(e){}";
    ?>

    在用户方面,它会变得一团糟,涉及安全性+可用性。可以这样做:
    [...document.getElementsByTagName("script")].forEach(function(el){
    var url=el.src;
    el.parentNode.removeChild(el);
    ajax(url,function(code){ // needs to be implemented
    try{
    eval(code);
    }catch(e){}
    });
    });

    关于javascript - 有没有办法尝试/捕捉来自给定 &lt;script&gt; 标签的任何 JS 噪音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42301074/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com