Javascript bookmarklet中的jQuery.getScript()继续回调,但未成功执行插件
我在创建一个工具时遇到了一个问题,该工具通过一个代码生成插件在页面上提供自定义覆盖,一旦用户单击外部站点上的bookmarklet,该插件就会从服务器上抓取 在bookmarklet内部调用Javascript bookmarklet中的jQuery.getScript()继续回调,但未成功执行插件,javascript,jquery,jquery-plugins,bookmarklet,dom-manipulation,Javascript,Jquery,Jquery Plugins,Bookmarklet,Dom Manipulation,我在创建一个工具时遇到了一个问题,该工具通过一个代码生成插件在页面上提供自定义覆盖,一旦用户单击外部站点上的bookmarklet,该插件就会从服务器上抓取 在bookmarklet内部调用$.getScript时,bookmarklet成功获取脚本并开始执行回调函数。一切都在工作,直到我开始访问插件本身,开始生成HTML。然而,一旦调用了plugin方法,我就无法从控制台接收任何信息,覆盖层也无法显示 插件结构(方法本身的源代码被省略,因为这是一个公司项目-不幸的是,我知道,但遗憾的是必要的)
$.getScript
时,bookmarklet成功获取脚本并开始执行回调函数。一切都在工作,直到我开始访问插件本身,开始生成HTML。然而,一旦调用了plugin方法,我就无法从控制台接收任何信息,覆盖层也无法显示
插件结构(方法本身的源代码被省略,因为这是一个公司项目-不幸的是,我知道,但遗憾的是必要的)。:
以及我的相关bookmarklet内容:
$.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
});
}
});
});
$.getScript(,function(){
//生成要发送到服务器的数据
//将无序列表发送到服务器进行处理
$.ajax({
requestType:'GET',
网址:,
数据类型:“jsonp”,
jsonp:“回调”,
成功:函数(返回数据){
//success param INDER as data需要继续。
$.each(returnedData.data,function(i,val){
var htmlToAdd,
内容;
console.log(val);//成功,不为空。
htmlToAdd=$.generator('generateItem',val);
console.log(htmlToAdd);//此时无法访问日志
//要附加到页面的代码
});
}
});
});
所有这些方法都是基于$.CSS和$()、var.append()和var.HTML()函数生成HTML和CSS,并使用几个hide/remove函数在退出时将其清除
现在已经很晚了(发帖时接近晚上9:30),我正在失去注意力,所以我明天早上到达办公室时会仔细检查这些方法,我只是想澄清这种方法存在的任何缺陷,或者我在AJAX请求、getScript()的使用或插件结构中是否有任何明显的错误。如果我知道这可能是一个基于方法的问题,这将缩小我的搜索范围,并允许对某些函数进行潜在的重写
提前感谢,
克雷格·多姆维尔
我只是想澄清这种方法存在的任何缺陷,或者如果我在AJAX请求、getScript()的使用或插件结构中有任何明显的错误
我看你的基本方法没有错
需要考虑的一些事情:在使用
$.generator(…)
之前,添加控制台.log($.generator)
,看看它是否返回您期望的函数代码。不要以为仅仅因为启动了getScript回调,脚本就被正确执行了。您似乎假设$==jQuery;也许这是一个安全的假设,也许不是。在适当的地方用jQuery替换了$,以减少混淆(包括在插件中)。该插件似乎没有加载,因为console.log将其显示为“未定义”。谢谢你的到场。现在来找出它为什么不加载。
$.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
});
}
});
});