bookmarklet中的jQuery.getScript()进行回调,但没有成功执行插件
jQuery.getScript() in bookmarklet proceeds to callback, but does not execute plugin successfully
我在创建一个工具时遇到了一个问题,该工具通过代码生成插件在页面上提供自定义覆盖,一旦用户单击外部网站上的bookmarklet,就会从服务器上获取该插件。
在bookmarklet内部调用$.getScript
时,bookmarklet成功获取脚本并开始执行回调函数。一切都在工作,直到我开始访问插件本身,开始生成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()的使用或插件结构中有任何明显的错误。如果我知道这可能是一个基于方法的问题,那就缩小了我的搜索范围,并允许对某些函数进行潜在的重写。
提前感谢
克雷格·多姆维尔。
我只是想澄清一下这种方法存在的任何陷阱,或者如果我在AJAX请求、getScript()的使用或插件结构中有任何明显的错误。
我认为你的基本方法没有错。
需要考虑的一些事项:在使用$.generator(...)
之前,添加console.log($.generator)
,看看它是否返回您期望的函数代码。不要因为getScript回调被触发就认为该脚本执行正确。您似乎认为$==jQuery;也许这是一个安全的假设,也许不是。
- 如何在Angular2中使用jQuery插件
- 可以前端maven插件使用节点,npm已经安装
- 如何使jQuery插件函数可调用以供独立使用,而不在集合上操作
- 我的jQuery插件参数没有正确启动,遇到了问题
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 如何使用jQuery可编辑插件检查ajax是否成功完成
- bookmarklet中的jQuery.getScript()进行回调,但没有成功执行插件
- Jquery 自动完成插件未显示成功响应
- Cordova Android短信插件不会触发成功或错误回调
- Jquery表单插件未显示成功功能
- 验证插件没有采取引导程序 3.0 类成功成功
- jquery.validate 插件在 AJAX 成功回调中访问表单
- jQuery 验证插件:成功函数
- Jquery为我的插件实现了一个成功和错误回调,该插件与AJAX一起工作
- 验证登录&使用jquery验证插件重定向到成功页面
- 如何更新一个变量在成功的短信读取插件
- 如何在简单本地头像WordPress插件成功上传后重新加载页面
- 如何仅在jQuery验证插件成功时发送ajax验证
- 如何在成功安装Firefox插件时调用API url
- 使用ScrollTo jQuery插件提交表单后滚动到错误和成功消息