Javascript 在IE7中两次包含Prototype.js会导致冲突

Javascript 在IE7中两次包含Prototype.js会导致冲突,javascript,internet-explorer,prototypejs,explorer,Javascript,Internet Explorer,Prototypejs,Explorer,我使用的是原型javascript框架。我将其包含在javascript代码片段中,允许人们复制并粘贴到他们的网站上。他们的网站可能已经包含了原型,或者他们想多次包含该片段。在这两种情况下,原型将被定义两次,因此IE7将不起作用。在几乎任何原型库函数调用中,它都会说“对象不支持此属性或方法”。我试过这个: if (typeof(Prototype) === 'undefined') { alert('including Prototype'); // minified Prototy

我使用的是原型javascript框架。我将其包含在javascript代码片段中,允许人们复制并粘贴到他们的网站上。他们的网站可能已经包含了原型,或者他们想多次包含该片段。在这两种情况下,原型将被定义两次,因此IE7将不起作用。在几乎任何原型库函数调用中,它都会说“对象不支持此属性或方法”。我试过这个:

if (typeof(Prototype) === 'undefined') {
   alert('including Prototype');
   // minified Prototype code here
}
alert('running my code');
// all my code here
当我运行这个时,只有“包括原型”被提醒,但“运行我的代码”从未被提醒。为什么?

只有“包含原型”被提醒,但“运行我的代码”从未被提醒。为什么?

我不知道在没有看到代码的情况下,您在JavaScript错误控制台中得到了什么吗?-但有一种可能性是,代码中的某些内容依赖于处于一个未经修饰的全局范围中。例如,
函数
语句不能在标准ECMAScript中的
if
中使用。如果您尝试,实际发生的情况取决于浏览器,但通常它可能会覆盖先前声明的函数版本,即使
if
子句未计算
true

这个问题可以通过将原型放在自己的
块中来解决,该块在主脚本执行之前通过DOM方法或document.write插入到页面中。然而:

我将其包含在javascript代码片段中,允许人们复制并粘贴到他们的网站上

是的,我真的不会那么做。在一个页面上使用多个范围广泛的侵入性框架(如Prototype或jQuery)会导致冲突,并可能导致难以调试的问题。(同一框架的两个副本/版本相同。)

当你是一个可接受的片段时,你是另一个站长家的客人,你需要尽可能少的足迹。这意味着你不应该使用任何框架

只有“包含原型”被提醒,但“运行我的代码”从未被提醒。为什么?

我不知道在没有看到代码的情况下,您在JavaScript错误控制台中得到了什么吗?-但有一种可能性是,代码中的某些内容依赖于处于一个未经修饰的全局范围中。例如,
函数
语句不能在标准ECMAScript中的
if
中使用。如果您尝试,实际发生的情况取决于浏览器,但通常它可能会覆盖先前声明的函数版本,即使
if
子句未计算
true

这个问题可以通过将原型放在自己的
块中来解决,该块在主脚本执行之前通过DOM方法或document.write插入到页面中。然而:

我将其包含在javascript代码片段中,允许人们复制并粘贴到他们的网站上

是的,我真的不会那么做。在一个页面上使用多个范围广泛的侵入性框架(如Prototype或jQuery)会导致冲突,并可能导致难以调试的问题。(同一框架的两个副本/版本相同。)

当你是一个可接受的片段时,你是另一个站长家的客人,你需要尽可能少的足迹。这意味着你不应该使用任何框架