1

我有这个扩展功能,它似乎没有引起任何问题。但是一旦我尝试使用它,我就会收到一条错误消息:对象不支持属性或方法'n2name'

错误截图

插件代码中没有报告错误(下面粘贴的代码片段供参考,最后附有完整文件的链接)。

有谁知道为什么这不起作用?

注意:我正在尝试解决这个开源项目的一个问题:https ://github.com/n2cms/n2cms/issues/279并且可能有更多关于该 Github 错误的有用细节。

对不起,如果这个问题太模糊,并且对于长代码片段(其中大部分可能不相关)。但任何帮助将不胜感激

/**
* 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 完整源,如果上面的代码片段没有用:https ://github.com/n2cms/n2cms/blob/4469580fcdd9c91f7576f07c3d2c8a4479ed6ce9/src/Mvc/MvcTemplates/N2/Resources/Js/plugins/jquery .n2name.js

4

1 回答 1

1

错误“对象不支持属性或方法<name>”(IE)和“<name>不是函数”(Chrome)通常意味着您的 jQuery 插件在调用之前没有成功加载。

这可能是由于请求失败(检查开发工具的网络选项卡)、忘记/放错了插件的script标签或script具有defer/async属性的标签。另一个可能的原因是插件的脚本包含语法错误(在这种情况下检查开发工具的控制台选项卡)。

在同一页面中拥有多个版本的 jQuery(如 OP 链接的 GH 问题中所评论的那样)是另一种可能性,因为包装在(function(){}(jQuery));样板文件中的插件仅添加到window.jQuery插件脚本加载时引用的 jQuery 对象。


在这种特定情况下,OP 在 VS 中从 localhost 加载插件时遇到问题。

我见过类似的问题,我只是补充一点,从URI 方案//somecdn.com/library.js加载文件时使用无协议 URL(例如:)是无效的。file:///这是因为无协议 URL 从父文档“继承”了正在使用的协议,而file:///不是协议。如果您从本地服务器加载它(例如,通过httpas 提供的父文档http://localhost/library.js),无协议 URL 应该可以正常工作。

于 2013-08-17T00:20:32.977 回答