2009-11-19 1 views
1

혼자,이 코드는 작동합니다 코드에 10 개의 함수를 추가합니다. 코드를 호출하지도 않지만 코드가 작동을 멈 춥니 다.

CustomButton = { 

1: function() { 
    alert("Just testing") 
    }, 

} 

나는 아래의 코드를 추가하고 위의 코드는 작동을 멈 춥니 다 :

function getvisitingnow() { 
    return document.location; 
} 
function getcontents(uri) { 
    var req = new XMLHttpRequest(); 
    req.open('GET', uri, true); 
    req.onreadystatechange = function (aEvt) { 
     if (req.readyState == 4) { 
      if(req.status == 200) { 
       return req.responseText; 
      } 
     } 
    }; 
    req.send(); 
} 
function regexforsitefound(uri, searchcontents) { 
    var re = new RegExp("\\<div class=g\\>.*?(?:\\<a href=\\\"?(.*?)\\\"?\\>.*?){2}\\</div\\>", "mi"); 
    var sitefound = searchcontents.match(re); 
    if (sitefound[0]) return sitefound[0] else return null; 
} 
function regexforcategoryfound(uri, searchcontents) { 
    var re = new RegExp("\\<div class=g\\>.*?(?:\\<a href=\\\"?(.*?)\\\"?\\>.*?){2}\\</div\\>", "mi"); 
    var categoryfound = searchcontents.match(re); 
    if (categoryfound[1]) return categoryfound[1] else return null; 
} 
function regexfordomainname(uri) { 
    var re = new RegExp("http://(?:[A-Za-z0-9-]+\\.)?[A-Za-z0-9-]+\\.[A-Za-z0-9-]+/?", "si"); 
    var domainname = uri.match(re); 
    if (domainname) return domainname; 
} 
function regexforparentdir(uri) { 
    var re = new RegExp("http://(?:[A-Za-z0-9-]+\\.)?[A-Za-z0-9-]+\\.[A-Za-z0-9-]+/?", "si"); 
    var parentdir = uri.match(re); 
    if (parentdir) return parentdir; 
} 
function getcomparisonlink(visitingnow) { 
    var searchuri = null; 
    var searchcontents = null; 
    var uri = visitingnow; 
    while(true) { 
     searchuri = 'http://www.google.com.br/search?'; 
     searchuri += 'q='+ uri +'&btnG=Search+Directory&hl=en&cat=gwd%2FTop'; 
     searchcontents = getcontents(searchuri); 
     var sitefound = regexforsitefound(searchcontents); 
     if (sitefound) { 
      var categoryfound = regexforcategoryfound(searchcontents); 
      if (categoryfound) { 
       return categoryfound; 
      } 
     } else { 
      var domainname = regexfordomainname(uri); 
      if (!domainname) { 
       var parentdir = regexforparentdir(uri); 
       uri = parentdir; 
      } else { 
       return null; 
      } 
     } 
    } 
} 
function clickedlink(event){ 
    var visitingnow = getvisitingnow(); 
    if (visitingnow) { 
     getcomparisonlink(visitingnow); 
     if (comparisonlink) { 
      tab.open(comparisonlink); 
     }; 
    } 
} 
function createBookmarkItem() { 
    const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"; 
    var item = document.createElementNS(XUL_NS, "toolbarbutton"); 
    item.setAttribute("id", "Testing-Doit-Button2"); 
    item.setAttribute("class", "bookmark-item pagerank"); 
    item.setAttribute("tooltiptext", "Do it!"); 
    item.setAttribute("oncommand", "testing_doit();"); 
    return item; 
} 
function placeBookmarkItem() { 
    var toolbar = document.getElementById("PersonalToolbar"); 
    var button = createBookmarkItem(); 
    toolbar.appendChild(button); 
} 

이유는 무엇입니까?

+2

삽입 한 코드에 오류가있을 수 있습니다. 문제가 있는지 확인하려면 Firefox 오류 로그를 확인하십시오. – Bobby

+1

한 번에 하나의 기능 만 추가하려고 했습니까? 페이지에 구문 오류가있는 경우 모든 자바 스크립트가 작동을 멈 춥니 다. –

+0

확장이로드 될 때 바로 toJavaScriptConsole()을 호출하는 것이 도움이된다는 것을 알았습니다. js 파일의 맨 위에 놓거나 init() 메소드가있는 경우이를 넣으십시오. 오류 콘솔이 표시되지 않는다면 구문 오류 때문일 수 있습니다. 꾸러미를 포장하고 배포하기 전에 그 전화를 제거하는 것을 잊지 마십시오. – MatrixFrog

답변

4
if (sitefound[0]) return sitefound[0] else return null; 

이 구문은 유효하지 않습니다.

시도 :

if (sitefound[0]) 
    return sitefound[0]; 
else 
    return null; 
+0

중괄호는 필수는 아니지만 원래 구문을 사용하면 구문이 잘못되었음을 명확히 알 수 있습니다.하나의 조건이있는 경우 종종 중괄호를 건너 뜁니다. 그러나 나는 다른 것을 사용하는데, 나는 속박을 던진다. –

+0

중괄호를 사용하면 한 줄로 압축 될 수 있습니다. –

+0

올바른 구문을 사용하면 모든 JS 코드를 한 줄로 압축 할 수 있습니다. 그것은 그 형식에서 가장 maintainable하지 않습니다 .... –

9

하나씩 기능을 추가해보십시오. 코드가 작동하지 않는 기능을 확인하십시오. 그런 다음 함수 내용을 비우면 한 번에 여러 조각으로 다시 채울 수 있습니다. 코드가 작동하지 않는 곳을 다시 확인하십시오. 약 구문 오류가 있어야합니다.

하지만 Bobby가 제안한 것처럼 쉬운 방법은 Firefox Errorlog 또는 Firebug를 시도하는 것입니다.

+0

나는 많은 투표를 얻었습니다. 단조롭고 짜증나는 것처럼 보입니다. 구문 오류를 쉽게 찾을 수있는 방법이 많이 있습니다! –

5

자바 스크립트 오류가 약간 발생하면 많은 문제가 발생할 수 있습니다. 두 곳에서 세미콜론을 추가하는 것을 잊었습니다. categoryfound [1] 여기

function regexforsitefound(uri, searchcontents) { 
    var re = new RegExp("\\<div class=g\\>.*?(?:\\<a href=\\\"?(.*?)\\\"?\\>.*? ){2}\\</div\\>", "mi"); 
    var sitefound = searchcontents.match(re); 
    if (sitefound[0]) return sitefound[0] else return null; 
} 

한 후 :

function regexforcategoryfound(uri, searchcontents) { 
    var re = new RegExp("\\<div class=g\\>.*?(?:\\<a href=\\\"?(.*?)\\\"?\\>.*?){2}\\</div\\>", "mi"); 
    var categoryfound = searchcontents.match(re); 
    if (categoryfound[1]) return categoryfound[1] else return null; 
} 
0

CustomButton 펑션 후 쉼표 깰 수있는 코드

는 sitefound [0] 여기 뒤에 세미콜론이 있어야 IE의 코드. 또한 여기에서 처음으로 CustomButton을 사용하는 경우 var으로 소개해야합니다. 나는 이것이 당신이 요구 한 문제가 아니라는 것을 압니다. 그렇지 않으면, 모든 것이 정확 해 보입니다.

1

당신은 사파리의 맥 사용자, 개방 (최신 버전)을하고 공격하는 경우에 좋은 패널을 열어

⌥⌘ + I,

많은 차트와 클라이언트 - 서버 상호 작용에 대한 데이터 자바 스크립트 오류를보고 발견하거나 콘솔에서 javascript를 직접 디버깅 할 수도 있습니다. 산뜻한.

Firefox의 경우 firebug을 사용해보십시오. 어디서 잘못 되었습니까? [Firebug] ... 웹 페이지에서 CSS, HTML 및 JavaScript를 편집, 디버깅 및 모니터링 할 수 있습니다. .