JavaScript try catch 语句

标签 javascript html

我正在分析网站上的一些代码,发现了以下匿名函数,后跟 try catch 语句。我只是想知道 try catch 语句最后在做什么。它是否预加载 url,以便加载速度比匿名函数更快?另外,重点是它没有捕获任何错误。

(function() {
        var fired = false;
        bsnPop.add("http://www.someurl.com", {
            under: !noPopunder,
            newTab: false,
            forceUnder: true,
            shouldFire: function() {
                return !fired;
            },
            cookieExpires: -1,
            afterOpen: function(url) {
                createCookie();
                fired = true;
                doSecondPop();
            }
        });
    })();
    try {
        var hint = document.createElement("link");
        hint.rel = "dns-prefetch";
        hint.href = "http://www.someurl.com";
        document.head.appendChild(hint);
        var hint = document.createElement("link");
        hint.rel = "preconnect";
        hint.href = "http://www.someurl.com";
        document.head.appendChild(hint);
    } catch (e) {}

最佳答案

引用link types MDN 上的列表中,“dns-prefetch”和“preconnect”被列为实验性的。它们不会出现在 HTML5 中链接元素的链接类型的“rel”值列表中。

因此,该代码在网络上使用实验技术,这可能会在某些浏览器中引发错误。为了防止停止应用程序并在控制台上记录异常,代码被放置在 try block 中,并带有忽略错误的 catch block 。

<小时/> 为了回答问题的详细信息,将调用 IIFE 中的匿名函数,并在对 bsnPop.add 的调用中传递包含参数和回调的对象。在此阶段似乎并未创建弹出窗口。

try block 中的下一个代码尝试通过提前请求 DNS 查找网站名称来加速对网站的访问,并在尝试检索内容之前打开与网站的连接。

代码被放置在 try block 中,以适应浏览器在不支持请求的操作时抛出异常的可能性。该应用程序并不认为缺乏支持是一个错误,并且无论如何都想继续。

最终结果是,如果支持 dns-prefetchpreconnect,浏览器就可以接受提示并执行操作。如果不支持它们,则忽略生成的任何错误,代码将在下一条语句处继续 - 稍后连接到网站将必须以正常速度继续。

关于JavaScript try catch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41858917/

相关文章:

javascript - 使用 JavaScript 添加 JSON-LD

javascript - 在javascript中,如何反转 Canvas 的y轴?

html - 防止在 Zurb Foundation 中调整网格大小

javascript - 网站菜单在 Safari 浏览器中不显示某些内容

javascript - 如何从PHP获取特定的radio值

javascript - chrome 扩展 `sendResponse` 不起作用

javascript - 仅在页面刷新后加载 Jquery 脚本

javascript - 将 css 添加到 jquery 子元素

html - 如何为两个标签设置一个CSS规则?

javascript - 我想根据调用的函数来更改图像的鼠标悬停和鼠标悬停效果