0

ここで私は2つのJavaScriptファイルを持っていると私はエラーを回避するために、以下のようmanifest.jsonを変更:クロム拡張のjavascriptファイルを使用して別のjavascriptファイルに存在するオブジェクトにアクセスするにはどうすればよいですか?

o = { 
    "timeStamps" : t.slice(), 
    "messages" : Object.assign({}, a) 
} 
console.log(o); 
help(o.messages, o.timeStamps.length); 

function help_final(){ 
    return o; 
} 

{ 
    "matches": [ 
    "*://example.com" 
    ], 
    "all_frames": true, 
    "css":[ 
    "css/d.css", 
    "css/bootstrap.min.css" 
    ], 
    "js": [ 
    "scripts/jquery.min.js", 
    "scripts/home/msg.js", 
    "scripts/home/modify.js" 
    ] 
} 

今、私は、オブジェクトがmsg.jsファイルに常駐していると私は唯一の関連する部分を含めています持っています

ここでconsole.log(o)は問題なく動作しています。だから私はこのオブジェクトomodified.jsという別のファイルにしたい。

message_object = help_final(); 
$.getScript("msg.js") 
    .done(function(script, textStatus) { 
    console.log(textStatus); 
    //here i need to access the object o and store it as global variable 
    }) 
    .fail(function(jqxhr, settings, exception) { 

}); 

$(document).ready(function() { 
    console.log("ready!"); 
    //I need to access the obj here 

    console.log(message_object); 
}); 
+0

は、2 jsファイルのバックグラウンドページですか? – juvian

+0

@juvian普通のスクリプトはありません –

答えて

1

すべてのファイルは、それが見えるものから(オブジェクトにアクセスできるように、ブラウザにその特定のファイルの外のオブジェクトにアクセスできるようにするには、関数をエクスポートする必要があります。ここ

は私modified.jsファイルですとにかく世界的にそれを保管しようとしているように)。

だからmsg.jsにだけ(これが唯一のブラウザで使用されるべきであると仮定して)一番下に window.message_object = help_final;

を行い、その後、ちょうど得るためにmessage_object()を呼び出すために、他のファイルにコードビットを変更しますoオブジェクトです。

また、あなたはちょうどmodified.jsでconsole.log(o)を言うことができjavascriptのプロトタイプhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/prototype

+1

'window.o'は' o = ... 'に暗黙的に指定されているので、必要ありません。私はこれが拡張問題であり、javascriptの問題ではないと思います。 – Teepeemm

1

を使用してになります。 $.getScriptは、スクリプトをページの世界に置きます。拡張の世界ではありません。詳細は、isolated worldを参照してください。

関連する問題