0

私には解決できない本当の問題があり、コンピューターがとても得意です。JavaScript を使用してオブジェクトを構築することで、限界を超えました。3 つの外部 js ファイルと、呼び出しを開始する HTML ファイルがあります...

セットアップ 1

popup.HTML ファイル コード:

...

<script type="text/javascript" src="MethodObjects.js"></script>
<script type="text/javascript" src="popup (test Objects).js"></script>

...

MethodObject.js ファイル コード:

var URLDisectorO={

    function URLDisector(URL){

        //HERE THE COMPILER SAYS: Unexpected identifier Uncaught ReferenceError:

        //I need to pass a URL into this from another function...
        //test if the URL has google search in it

        var myURL = "" + URL;
        var index = mySearch(myURL, "https://www.google.com/search?q=");

        if(index==-1){
            document.getElementById('currentLink').innerHTML = myURL + "<br /><br />This URL <font color='blue'><b><u><i>WON'T</i></u></b></font> be blocked!";
        }
        else{
            if(index==0){
                document.getElementById('currentLink').innerHTML = myURL + "<br /><br />This URL <font color='red'><b><u><i>WILL</i></u></b></font> be blocked!";
            }
            else{
                return "ERROR";
            }
        }
    }

    function mySearch(str, str1){

    //Searches the URL for the two strings passed in...

        var index=-1;
        var strlength=str.length;
        var str1length=str1.length;
        var length=0;

        if(strlength>str1length){
            length=str1length;
        }
        else length=strlength;

        for(var i=0; i<length; i++){

            if(str.charAt(i)==str1.charAt(i)){

                if(i>index && index==-1 && i<1){
                    index=i;
                }

                for(var j=i; j<length-1; j++){
                    if(str.charAt(j+1)==str1.charAt(j+1)){
                        i=j;
                        break;
                    }
                    else{
                        index=-1;
                        break;
                    }
                }//end of inner for loop

                if(index==-1){
                    break;
                }
            }
        }//end of outer for loop

        if(index>0){
            return -1;
        }
        else{
            return index;
        }
    }//end my search method
}

popup (Object Methods test).js FILE コード:

//This is the file doing the calling and passing in stuff to the other file above...

//The HTML file called the JS file and it starts and it works until it gets down to...

var txtU="";

function getURL(){
chrome.tabs.getSelected(null, function(tab) {
    var URL="";
    document.getElementById('currentLink').innerHTML = tab.url;
    URL = "" + document.getElementById('currentLink').innerHTML;
    txtU+=URL;
    alert("The URL is:\n\n" + txtU);
    URLDisectorO.URLDisector(txtU);
    //Object Call Here!
    //HERE THIS DOESN'T WORK!!!
    //The compiler says: Uncaught SyntaxError: URLDisectorO is not defined.

});
}

getURL();//The Call! The main method's call!

私を悩ませているのは、popup.js FILE コードが唯一の外部 .js ファイルであり、このコード行が HTML FILE にある場合に機能することです...

セットアップ 2

HTML ファイル コード:

...

<script type="text/javascript" src="MethodObjects.js"></script>

...

popup.js ファイル コード:

var txtU="";

function getURL(){
chrome.tabs.getSelected(null, function(tab) {
    var URL="";
    document.getElementById('currentLink').innerHTML = tab.url;
    URL = "" + document.getElementById('currentLink').innerHTML;
    txtU+=URL;
    alert("The URL is:\n\n" + txtU);
    URLDisector(txtU);
});
}

getURL();//The Call! The main method's call!

function URLDisector(URL){

    var myURL = "" + URL;
    var index = mySearch(myURL, "https://www.google.com/search?q=");

    if(index==-1){
        document.getElementById('currentLink').innerHTML = myURL + "<br /><br />This URL <font color='blue'><b><u><i>WON'T</i></u></b></font> be blocked!";
    }
    else{
        if(index==0){
            document.getElementById('currentLink').innerHTML = myURL + "<br /><br />This URL <font color='red'><b><u><i>WILL</i></u></b></font> be blocked!";
        }
        else{
            return "ERROR";
        }
    }
}

function mySearch(str, str1){

    var index=-1;
    var strlength=str.length;
    var str1length=str1.length;
    var length=0;

    if(strlength>str1length){
        length=str1length;
    }
    else length=strlength;

    for(var i=0; i<length; i++){

        if(str.charAt(i)==str1.charAt(i)){

            if(i>index && index==-1 && i<1){
                index=i;
            }

            for(var j=i; j<length-1; j++){
                if(str.charAt(j+1)==str1.charAt(j+1)){
                    i=j;
                    break;
                }
                else{
                    index=-1;
                    break;
                }
            }//end of inner for loop

            if(index==-1){
                break;
            }
        }
    }//end of outer for loop

    if(index>0){
        return -1;
    }
    else{
        return index;
    }
}//end of method

問題は、オブジェクトを使用して、特定のケースだけでなく、常にこれらのメソッドにアクセスできるようにしたいということです...オブジェクトを使用すると、このコードがもう少し柔軟になります...必要に応じてそれらを呼び出します(SETUP 1 - popup (Object Methods test).js) ただし、上記の設定を維持したいので、以下の設定に戻す必要はありません...

ヘルプとエラー修正の指示をいただければ幸いです。

4

3 に答える 3

0

サム、私が言ったように、あなたはあまりにも多くの情報を投稿しているので、私はあなたの問題を本当に理解できません。ただし、htmlファイル内にjsファイルを間違った順序で含めていると思います。書いてみてください:

<script type="text/javascript" src="popup.js"></script>

何よりも。

また、質問を編集するのにも時間がかかります。より短く、より明確にします。

于 2013-08-12T19:38:57.060 に答える