在userscript中提供必要的新版本jQuery(1.4.2)的最佳策略是什么,它修改了一个已经具有旧版本jQuery(1.3.1)的页面?在GreaseMonkey中使用jQuery 1.4,而原始页面使用jQuery 1.3(不同版本)?
最好原始页面继续使用'$'符号,而在我的脚本中它使用由jquery.noConflict()
指定的别名。
根据对this question的回答,任何一个希望加载的额外版本都应放置在原始脚本标记之上。这是我有点困惑,因为我有印象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);
*/
但是,这将需要加载jQuery库每页3次。有没有更好的方法?
编辑2:尽管GM脚本已经提供了1.4.2副本,但似乎原始页面仍然可以使用其1.3.1副本,只要我使用新别名,它们就可以共存(gj
)来引用code142()
中的1.4.2 jQuery对象。
如果没有其他问题出现,那么这将是我的解决方案。我希望对其他可能遇到这个问题的人有用。
嗨。这种情况下需要最新版本,因为原始页面上的旧版本不支持我想用于我的用户脚本的一些功能。 – Dan7 2010-04-29 16:55:13