我在网页上有几个脚本,我正在迭代它们,弄清楚哪些是广告调用(包含特定字符串),然后解析这些脚本标记以从这些脚本标记中获取一些url参数。 / p>
var cmunt_uniqueId, cmnunt_kw;
var scripts = jQuery('script');
var adObject = {};
jQuery(scripts).each(function(v,u) {
if ((jQuery(u).attr('src') !== undefined) && (jQuery(u).attr('src').indexOf('cmnUNTmob-20121130.js') > -1)) {
console.log('script.src[' + v + ']="' + jQuery(u).attr('src') + '"');
var adCall = jQuery(u).attr('src');
// console.log(adCall);
var pubtag = adCall;
var newtag = pubtag.replace(/^[^\?]+\??/, '');
var parts = newtag.split('&');
var part1 = parts[0].split('=');
var part2 = parts[1].split('=');
var cmn_site_unit = part1[1].split('/');
var cmn_site = cmn_site_unit[0];
var cmn_unit = cmn_site_unit[1];
cmnunt_kw = part2[1];
var cmunt_uniqueId = getCookie('__utma');
adObject['cmn_unit'] = cmn_unit;
adObject['cmn_site'] = cmn_site;
console.log('inside function');
console.log(adObject['cmn_site']);
console.log(adObject['cmn_unit']);
return adObject;
}
});
console.log('outside function');
console.log(adObject['cmn_site']);
console.log(adObject['cmn_unit']);
在函数内部,在两次执行时,变量都被设置并分配给一个对象,以便在函数外部进行解析。在函数外部,在第二次执行时,变量返回为未定义。
以下是运行脚本的页面调用: WebPage
您可以使用Firebug在控制台中查看输出。任何人都可以解释为什么会这样吗?
答案 0 :(得分:2)
您将所有结果存储在同一个adObject属性中。当你循环时,最新的一个会覆盖其他的。
使用例如adObject [v]:
而不是adObject ['cmn_unit']。adObject[v] = {
cmn_unit:cmn_unit,
cmn_site:cmn_site
};
此外,jQuery(脚本)应该是脚本(尽管它不是错误,只是效率低下)。
答案 1 :(得分:1)
替换以下行:
jQuery(scripts).each(function(v,u) {
这个:
scripts.each(function(v,u) {
由于您的scripts
变量已包含jquery对象。