2012-11-30 2 views
0

웹 페이지에 몇 개의 스크립트가 있고 그 중 어떤 것이 광고 호출인지 파악한 다음 (특정 문자열 포함) 해당 스크립트 태그를 파싱하여 일부를 가져옵니다. 해당 스크립트 태그의 url 매개 변수객체를 반환하면 두 번째 반복에서 undefined가 반환됩니다.

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

당신은 방화범을 사용하여 콘솔에 출력을 볼 수 있습니다 여기에

스크립트를 실행하는 페이지의 호출이다. 왜 이런 일이 일어 났는지 설명 할 수 있습니까? 이 하나

jQuery(scripts).each(function(v,u) { 

:

+0

각 반복마다 개체 키를 새 값으로 덮어 쓰고 있습니다. 더 많은 값을 저장하려면 다른 키/속성이 필요합니다. – adeneo

답변

1

은 다음 줄을 교체하여 scripts 변수로

scripts.each(function(v,u) { 

이미 JQuery와 객체가 포함되어 있습니다.

+0

감사합니다. 감사합니다. – AGDM

2

모든 결과를 동일한 adObject 속성에 저장하고 있습니다. 루프를 돌리면 다른 루프를 덮어 씁니다. (이 오류는 아니지만 단지 비효율적)

adObject[v] = { 
    cmn_unit:cmn_unit, 
    cmn_site:cmn_site 
}; 

는 또한, jQuery를이 (스크립트) 정말 스크립트해야한다 대신 adObject [ 'cmn_unit']의

는 [V] 예를 들어 adObject를 사용합니다.

+0

감사합니다. – AGDM

관련 문제