【问题标题】:Resolve conflict with eval() function of Javascript解决与 Javascript 的 eval() 函数的冲突
【发布时间】:2015-11-06 05:51:37
【问题描述】:

我正在尝试使用 combined.js 一个 Jquery Sizzle 和 jQuery 核心的合并库来设置响应式菜单,它发布在这里:

https://pastee.org/erewc

但是当我将它包含在已经加载了许多脚本的页面中时,eval 函数冲突并产生错误,例如 jQuery(smartWizard) 和 PrototypeJS。

产生的错误如下:

TypeError: $(...) is null
$('options_2_2').advaiceContainer = 'options-2-container';$('options_2_2').callb...

combined.js > line 623

它涉及 eval 函数,所以我不知道如何解决它。我不认为jQuery noConflict 可以在这里工作,仍然欢迎提出建议。

【问题讨论】:

  • 应该是 $('.options_2_2') 还是 $('#options_2_2') 取决于 options_2_2 是 class 还是 id ,这就是我的想法
  • @BhawinParkeria 正如我已经说过的,PrototypeJS 也被加载并在页面中使用,错误中的代码是 Prototypejs,其中$('some') 表示 id 为“some”的元素

标签: javascript jquery conflict magento-1.9 conflicting-libraries


【解决方案1】:

我不知道这是临时解决方案还是永久解决方案(时间会证明),但我设法通过在 eval 函数调用(在 combine.js 中)周围设置一个条件来解决冲突,如下所示:

if(t.indexOf("$('options_") == -1) {
  e.eval.call(e, t)
}

我确信我的菜单元素的 class 或 id 属性中都没有“options_”。

所以我的冲突现在已经解决,但如果您有更好、更清洁的方法来获得永久解决方案,请随时发布您的答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-30
    • 2021-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-03
    • 2014-10-19
    相关资源
    最近更新 更多