在用户标记中提供必要新版本的jQuery(1.4.2)的最佳策略是什么,该版本修改了已经具有较旧版本的jQuery(1.3.1)的页面?

最好是原始页面继续使用“ $”符号,而在我的脚本中,它使用的别名为 jquery.noConflict().

根据答案 这个问题, ,任何一个希望加载的额外版本都应放在原始脚本标签上方。这是我有点困惑的地方,因为我在印象Greasemonkey处执行页面加载后执行脚本?

编辑: 一个想法是在Userscript中,附加jQuery 1.4.2的脚本标签,设置别名,然后再次为1.3.1附加脚本标签,以免打破使用1.3.1函数的原始页面代码。

var code142 = function() {
    gj = jQuery.noConflict(true);
    alert("142...");
    alert(gj); // check if the dollar (jquery) function works
    alert(gj().jquery); // check jQuery version
}

var script = document.createElement("script");
script.src = 'http://code.jquery.com/jquery-1.4.2.min.js'
document.documentElement.appendChild(script);


// assign jquery object alias and run code that uses 1.4.2 there
var script = document.createElement("script");
script.textContent = '(' + code142.toString() + ')();';
document.documentElement.appendChild(script);

/* The following is perhaps redundant, see EDIT 2 for more info

// add jquery 1.3.1 (again)
var script = document.createElement("script");
script.src = 'http://code.jquery.com/jquery-1.3.1.min.js'
document.documentElement.appendChild(script);

*/

但这需要每页3次加载jQuery库。有更好的方法吗?

编辑2: 似乎原始页面仍然可以使用其1.3.1副本,尽管GM脚本已经提供了1.4.2副本,但只要我使用新的别名,它们就可以共存(gj)参考内部的1.4.2 jQuery对象 code142().

如果什么都没有出现,那将是我的解决方案。我希望这对可能遇到这个问题的其他人很有用。

有帮助吗?

解决方案

我相信这就是您想要的.

只要您没有做任何复杂的事情,也不需要最新版本,请按照链接中的模式进行包含。

它检查是否加载了jQuery(typeof unsafeWindow.jQuery == 'undefined')在再次包括之前。 “简单”部分只是意味着您在1.3和1.4(可能是1.2.6)中所做的工作?如果是这种情况,只要加载了哪个版本,就无关紧要。 (除非是 非常 旧网站,然后 检查您使用的功能是否在jQuery Core中返回, ,但这可能小得多)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top