脚本不在非基于 Chromium 的浏览器中评估

Script not evaluating in non-chromium-based browsers

好的,所以我的公司有一个下载页面,允许访问者下载有关产品或目录的信息,可以在此处找到:Downloads

问题是,当您单击 Brandfolder 图像时,应该会出现一个弹出窗口,这在 Google Chrome、Opera 和 Safari 上运行良好。但是在 Internet Explorer 和 Mozilla Firefox 中,我收到一个控制台错误,指出:

Brandfolder is not defined

引用此文件:

<div class="container-fluid page-downloads" id="downloads-page-container">
    <div class="content-well col-sm-10 col-sm-offset-1 col-xs-12" style="float: none;">
        <div class="col-xs-12 col-sm-12" style="padding: 0; margin-bottom: 65px;">
            <h1 class="downloads-title">BRANDFOLDER</h1>
            <hr />
            <div class="brandfolder-section col-xs-12 col-sm-6">
<!-- ONCLICK ISSUE --><button onclick="Brandfolder.showEmbed({brandfolder_id: 'finisswim'});return false;" title="FINIS, Inc. Logos &amp; Other Brand Assets" style="border: none; background-color: transparent; padding: 0; margin: 0;">
                    <img src="/sca/site-images/Brandfolder-Web-Button.jpg" class="downloads-banner img-responsive catalog-img" alt="Brand Folder">
                </button>
            </div>
        </div>
        ...
        ...
        ...
    </div>
</div>
<!-- BRANDFOLDER JS FILE -->
<script type="text/javascript" async="true" src="//d2sdf28wg0skh3.cloudfront.net/bf.min.js"></script>

所以我确保文件正在加载并且内容匹配,确实如此。然后我转到控制台,记录 window,并检查是否填充了 Brandfolder,但没有填充(但它在 Chrome、Opera 和 Safari 中填充)。

因为它不工作,我把它拉到我的本地主机上,启动它,它在所有浏览器上都能正常工作...wtf

我的本地主机是通过 NetSuite SuiteCommerce Advanced 平台托管的实时站点的精确副本(非常讨厌这个平台) 任何想法可能会出错,看看它在基于铬的浏览器中如何工作,但在其他浏览器中却没有,并且在开发环境中工作正常?

欢迎任何意见! - 谢谢

我在以下函数上设置了断点:

if (document.addEventListener && document.addEventListener("DOMContentLoaded", init, !1),
  /WebKit/i.test(navigator.userAgent))
  var _timer = setInterval(function() {
    /loaded|complete/.test(document.readyState) && (init(),
    clearInterval(_timer))
  }
  , 10);
window.onload = init;

由于 /WebKit/i.test(navigator.userAgent) 语句,仅在 webkit 上调用 init 函数。

在我看来,DOMContentLoaded 事件在脚本加载成功之前触发。

Paul 和 Brandfolder 在这里。出于某种原因,可能是由于 NetSuite,bf.min.js 的 JS 片段未在 Firefox 中加载,但在其他浏览器中加载。

确保在每个浏览器上都触发了以下 JS 代码:

<script type="text/javascript">(function(){var e=document.createElement("script");e.type="text/javascript";e.async=!0;e.src="//cdn.brandfolder.com/bf.min.js";var t=document.getElementsByTagName("script")[0];t.parentNode.insertBefore(e,t)})();</script>