だチェックし、それは、私のプラグインは(ブラウザやない)任意のJSエンジン上で実行することができることを考えると、ウィンドウオブジェクト
場合はどのようにして、いくつかの変数が実際にブラウザ
window
対象であることを知っているん。どうすれば
someVar
がブラウザwindow
オブジェクトを参照しているかどうかを知ることができます。window
に、実際にブラウザであるかどうか確認できるものがありますかwindow
オブジェクトですか?そして、
window
というオブジェクトが実際に存在する変数ではなく、ブラウザwindow
オブジェクトが実際に存在するかどうかをチェックする方法。あなたは
someVar
は、それ自体でwindow
あり、そしてあなたがsomeVar === window
のような本当ブラウザwindow
オブジェクトに対してそれを一致させたい場合は、どのようにあなたはそれがブラウザwindow
としていないことを確認しているwindow
を得るのですか言うことができないと仮定します外部スコープのwindow
という名前の他のオブジェクト、または別の環境の別のグローバルオブジェクトがありますか?
ただ、もう少し明確にする:
- 私は環境のグローバルを探していませんよ。私は特にブラウザ
window
オブジェクトを探しています。 - スクリプトがブラウザで実行されているかどうかは確認していません。
window
はスコープ外のどこかで宣言されている可能性がありますので、if(!window)
のようなことはできません。
function someFunction(){
var window = {foo:'bar'};
(function(){
console.log(window); //{foo:'bar'}
}());
}
私も自己参照を行うことができますので、私はif(window.window === window)
を確認することができない、などは以前、window
は外側のスコープからオブジェクトである可能性があるという。
var bar = {};
bar.bar = bar;
bar.bar.bar.bar.bar.bar === bar; //true
そしてので、動作しないことがあり、次のスクリプトはグローバル・スペース以外のものでラップまたは連結される可能性があります。 this
は、call()
,apply()
またはbind()
のような呼び出しでも変更できます。
これは重複していると感じていますが、最初に見た場所が見つかりませんでした。
可能重複して見られる最も簡単な方法の目的であります[node.jsでスクリプトが実行されているかどうかを確認する方法](http://stackoverflow.com/questions/4224606/how-to-check-whether-a-script-is-running-under-node-js) –
あなたがしたいように聞こえるウィンドウが存在するかどうかをチェックして、コードがブラウザで実行されているかどうかを判断します。ブラウザがwindow.location.hrefのようなウィンドウの一部として実装できる機能を探してみることもできますが、もちろんこれはフェールセーフではありません。有効なuserAgent文字列を返すことができるかどうかを判断する方法はありますか? – series0ne
'(function(){return this})' call(null) 'は常に動作しますか? –