我在代码中添加了10个函数,我甚至都没有调用它们,但代码停止工作!

时间:2009-11-19 14:38:31

标签: javascript firefox-addon xul

单独,此代码有效:

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);
}

为什么?

5 个答案:

答案 0 :(得分:9)

尝试逐个添加您的功能。看看你的代码停止工作的功能。然后清空功能内容,一次只能将它放回去。再次检查代码停止工作的位置。关于应该有语法错误。

但正如Bobby建议的那样,更简单的方法是尝试使用Firefox Errorlog,或者使用Firebug。

答案 1 :(得分:5)

一个小的JavaScript错误可能会破坏很多东西。你忘了在两个地方添加分号。

在sitefound [0]之后需要有一个分号:

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; 
}

和一个类别[1]之后:

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;
}

答案 2 :(得分:4)

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

此语法无效。

尝试:

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

答案 3 :(得分:1)

如果您是Mac用户,请打开(最新版本)Safari并点击

⌥⌘+ i,

打开了一个很棒的面板,其中包含大量有关客户端 - 服务器交互的图表和数据。您还可以直接查看和查找javascript错误,或在控制台中调试javascript。整齐。

对于Firefox,请尝试使用优秀的firebug来查看,出了什么问题..用他们自己的话来说:[使用Firebug] ..您可以编辑,调试和监控CSS,HTML和JavaScript任何网页。

答案 4 :(得分:0)

CustomButton中的函数之后的逗号可以破坏IE中代码的代码。另外,如果您是第一次使用CustomButton,则应使用var进行介绍。我知道这些不是你要求的问题,但除此之外,一切似乎都是正确的。