我在創建一個工具時遇到了問題,該工具通過一個代碼生成插件在頁面上提供自定義覆蓋,一旦用戶點擊外部網站上的書籤。bookmarklet中的jQuery.getScript()繼續回調,但不能成功執行插件
當在小書籤內部調用$.getScript
時,小書籤成功獲取腳本並開始執行回調函數。在我開始訪問插件本身以開始生成HTML之前,所有工作都在進行中。但是,一旦調用了插件方法,我無法從控制檯收到任何內容,並且疊加層無法顯示。
插件結構(來源方法本身省略,因爲它是一個公司的項目 - 不幸的是,我知道,但可悲的必要):
(function(jQuery){
var methods = {
generateHeader : function() {
},
generateItem : function(arguments) {
},
generateGridList : function(arguments) {
},
hideOverlay : function(){
}
}
jQuery.fn.generator = function(method) {
console.log("generator reached"); //Doesn't print.
if(methods[method]){
return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
} else if (typeof method[method] === 'object' || !method){
return methods.init.apply(this, arguments);
} else {
$.error('Method ' + method + ' does not exist on jQuery.generator');
}
};
})(jQuery);
而且我的相關內容書籤:
$.getScript(<scriptURL>, function() {
//generate data to send to server
//send unordered lists to server for processing
$.ajax({
requestType:'GET',
url: <url>,
dataType: 'jsonp',
jsonp: 'callback',
success: function(returnedData){
//success param inside as data is required to proceed.
$.each(returnedData.data, function(i, val){
var htmlToAdd,
content;
console.log(val); //succeeeds, not null.
htmlToAdd = $.generator('generateItem', val);
console.log(htmlToAdd); //fails to reach log at this point
//code to append to page
});
}
});
});
所有的方法都是基於$ .css和$(),var.append()和var.html()函數生成HTML和CSS,還有一些隱藏/刪除功能可以在退出時清除它。
這裏遲到了(接近下午9:30),我失去了注意力,所以我明天早上到辦公室時會仔細檢查方法,我只是想澄清一下這個問題。方法,或者如果我在我的AJAX請求中有任何明顯的錯誤,我使用getScript()或我的插件結構。如果我知道這可能是一個基於方法的問題,那麼這會縮小我的搜索範圍,並允許潛在地重寫某些函數。
在此先感謝,
克雷格Domville。
在合適的地方用jQuery代替$以消除混淆(包括在插件中)。看來插件沒有加載,因爲console.log顯示它爲'undefined'。感謝您的光臨。現在要弄清楚爲什麼它沒有加載。 –