Javascript 为什么这个jquery扩展不起作用?
我有这个扩展功能,它似乎没有引起任何问题。但当我尝试使用它时,我得到一条错误消息:对象不支持属性或方法“n2name” 插件代码中未报告任何错误(下面粘贴的代码片段仅供参考,末尾有指向完整文件的链接) 有人知道为什么这不起作用吗 注意:我正试图解决这个开源项目的一个问题:可能还有更多关于Github bug的有用细节 抱歉,如果这个问题太模糊,而且代码段太长(大部分可能与此无关)。但任何帮助都将不胜感激Javascript 为什么这个jquery扩展不起作用?,javascript,jquery,n2cms,Javascript,Jquery,N2cms,我有这个扩展功能,它似乎没有引起任何问题。但当我尝试使用它时,我得到一条错误消息:对象不支持属性或方法“n2name” 插件代码中未报告任何错误(下面粘贴的代码片段仅供参考,末尾有指向完整文件的链接) 有人知道为什么这不起作用吗 注意:我正试图解决这个开源项目的一个问题:可能还有更多关于Github bug的有用细节 抱歉,如果这个问题太模糊,而且代码段太长(大部分可能与此无关)。但任何帮助都将不胜感激 /** * n2name 0.2 */ (function($) { /* s
/**
* n2name 0.2
*/
(function($) {
/* some code removed for brevity */
$.fn.n2name = function(options) {
var invokeUpdateName = function(){
updateName(options.titleId, options.nameId, options.whitespaceReplacement, options.toLower, options.replacements, options.keepUpdatedBoxId);
};
if(options.keepUpdatedBoxId){
/* more code removed for brevity */
}
};
})(jQuery);;
链接到jquery.n2name.js完整源代码,如果上面的代码片段没有用处:错误“对象不支持属性或方法
”(IE)和“
不是函数”(Chrome)通常意味着您的jquery插件在被调用之前没有成功加载
这可能是由于请求失败(检查开发工具的“网络”选项卡)、忘记/错误放置插件的脚本标记或具有延迟/异步属性的脚本标记造成的。另一个可能的原因是插件的脚本包含语法错误(在这种情况下,请检查开发工具的控制台选项卡)
在同一个页面中有多个版本的jQuery(如OP的链接GH问题中所评论的)是另一种可能性,可以将插件包装在(function(){}(jQuery))代码>样板文件仅在加载插件脚本时添加到window.jQuery
引用的jQuery对象中
在这个特定的案例中,OP在从VS中的localhost加载插件时遇到问题
我见过类似的问题,我只想补充一点,从文件://
URI方案加载文件时,使用无协议URL(例如://somecdn.com/library.js
)是无效的。这是因为无协议URL“继承”父文档中使用的协议,并且文件://
不是协议。如果您从本地服务器加载它(例如,通过http
提供的父文档,如http://localhost/library.js
)无协议URL应该可以正常工作。错误“对象不支持属性或方法”(IE)和“
不是函数”(Chrome)通常意味着您的jQuery插件在被调用之前没有成功加载
这可能是由于请求失败(检查开发工具的“网络”选项卡)、忘记/错误放置插件的脚本标记或具有延迟/异步属性的脚本标记造成的。另一个可能的原因是插件的脚本包含语法错误(在这种情况下,请检查开发工具的控制台选项卡)
在同一个页面中有多个版本的jQuery(如OP的链接GH问题中所评论的)是另一种可能性,可以将插件包装在(function(){}(jQuery))代码>样板文件仅在加载插件脚本时添加到window.jQuery
引用的jQuery对象中
在这个特定的案例中,OP在从VS中的localhost加载插件时遇到问题
我见过类似的问题,我只想补充一点,从文件://
URI方案加载文件时,使用无协议URL(例如://somecdn.com/library.js
)是无效的。这是因为无协议URL“继承”父文档中使用的协议,并且文件://
不是协议。如果您从本地服务器加载它(例如,通过http
提供的父文档,如http://localhost/library.js
)无协议URL应该可以正常工作。在插件加载到页面之前(或者根本没有加载插件),您似乎正在调用$().n2name()
.jquery-1.9.1-min.js和jquery ui后面的jquery.n2name.js
(定义了上述脚本)将包含在
中。失败的调用位于
标记的前面。这会证实你的怀疑吗?确保插件脚本标签上没有defer
/async
属性,并且它的路径是正确的,并且没有加载错误-或者只需打开控制台并键入jQuery.fn.n2name
,查看它是否实际加载。这样做了。非常感谢你!由于某种原因,我的Visual Studio副本似乎无法从加载资源(HTTP请求在脚本调试器中显示为“已取消”)。当我把它上传到网络服务器时,它工作了。奇怪。。。谢谢你的帮助!在插件加载到页面(或者根本没有加载)之前,您似乎正在调用$().n2name()
。这个jquery.n2name.js
(上面定义了脚本)就包含在jquery-1.9.1-min.js和jquery-ui之后的
中。失败的调用位于
标记的前面。这会证实你的怀疑吗?确保插件脚本标签上没有defer
/async
属性,并且它的路径是正确的,并且没有加载错误-或者只需打开控制台并键入jQuery.fn.n2name
,查看它是否实际加载。这样做了。非常感谢你!由于某种原因,我的Visual Studio副本似乎无法从加载资源(HTTP请求在脚本调试器中显示为“已取消”)。当我把它上传到网络服务器时,它工作了。奇怪。。。谢谢你的帮助!