2016-09-06 4 views
0

FireFoxを使用している場合、navigatorのプロパティはoscpuです。oscpuプロパティをwindow.navigatorから削除します。

general.oscpu.overrideの値をabout:configに追加すると、プロパティを簡単に変更できます。

ただし、このオプションはFireFoxにのみ存在し、他のブラウザには存在しません。これにより、ブラウザの種類を100%確実に判断できます。

従来の方法では削除できません。何が起こったのか(oscpu in navigator)はfalseを返します。

このすべてが動作しません。

delete navigator.oscpu; 
'oscpu' in navigator; // true 

navigator.oscpu = null; 
'serviceWorker' in navigator; // true 
navigator.oscpu === null; // false 

Object.defineProperty(navigator, "oscpu", { 
    configurable: true, 
    value: undefined 
}); 
'oscpu' in navigator; // true 
navigator.oscpu === undefined; // true 

は、ナビゲータからこのプロパティを削除する方法がありますか?実際には他のパラメータ。私はFirefoxアドオンSDK拡張を書いています。

+0

あなたの目標は何ですか?あなたはブラウザを区別しようとしていますか? FirefoxをGoogle Chromeのように見せるためのFirefoxアドオンSDKアドオンを特定のJavaScriptコードに変換しようとしていますか?一般的にはJavaScriptですか?ブラウザを区別する方法は複数あります。 'navigator.oscpu'の内容、または完全な' navigator'オブジェクトの内容だけではありません。 – Makyen

+0

"FirefoxをGoogle Chromeのように見せるFirefoxアドオンSDKアドオンを作成しようとしていますか?"まったく。 Fireboxのユーザーエージェントを変更しました。この変更oscpuパラメータが公開されています。 他に何を考慮する必要がありますか? –

答えて

0

達成したいことをすることによる潜在的な副作用があります。あなたが望むものを達成するための良い方法を決定するために、あなたの目標が何であるかを知ることは役に立ちます。

しかし、あなたは特に、現在のスコープ、以下の作品にnavigator.oscpuの除去、要求している何のために:あなたは、あなたがそれを望んでいるすべてのコンテキスト/範囲内でこれを行う必要があります

//This specific code relies on navigator referring to the object which you want to 
// modify. In an Add-on SDK extension, if navigator is _actually_ the object you need 
// to modify to accomplish what you desire will depend on the scope you are in and 
// what object you have set the variable navigator to refer to. 

delete navigator.__proto__.oscpu; 
console.log(navigator.oscpu);  // undefined 
'oscpu' in navigator    // false 

注意効果をもたらす。一般的には、これは、コンテンツスクリプトを、すべてのページとフレームに挿入する必要があることを意味します。また、あなたがスプーフィングしようとしているJavaScript(つまり、ページスクリプトのスコープ内で、コードの実行範囲内ではなく)で見られるようにするコンテキスト/スコープでのみ行うように注意する必要もありますChromeの特権あり)。

関連する問題