2016-05-20 4 views
-1

すべてのウィンドウオブジェクトにアクセスする任意のJavaScriptファイルを取得するスクリプトを作成しています。したがって、私は必要な結果を得るためにウィンドウオブジェクトを偽装したいと思っています。必要なモジュールがローカルスコープにアクセスできるようにする

// arbitrary.js 
var foo = window.bar; 
-> Error: window undefined. 

したがって、モジュールのローカルスコープにウィンドウオブジェクトを挿入します。私はarbitrary.jsは、特に私は置けばそれは問題ではないので、「ウィンドウ」ではなく「global.window」にアクセスしようとするので、これは動作しませんarbitrary.js

// server.js 
global.window = {...}; 
require('./arbitrary"); 

の編集アクセス権を持っていないふりグローバルオブジェクト上のオブジェクト。私はオブジェクトを任意の.jsスコープに挿入できないようです。

これを達成する方法を知っている人はいますか?たぶん、私はそれが含まれてスコープ内で実行するarbitrary.jsコードを取得する "必要"とは別の関数を使用する必要がありますか?私はこれを行う方法を見つけていない。何らかの方法でeval()を使うべきですか?

+0

@ jfriend00本当に?私はそれを避けることを本当に望む。 – Willem

+1

私は何かを逃しているに違いないが、あなたが描写したものは「ただ働く」べきである。ちょうど確認するために、あなたはノードでこれを実行していて、それをブラウジング/ブラウザーに入れないのですよね? –

+0

@ go-olegこれはNode(6.1.0)で実行しています。基本的に私はwindow = global.windowを実行することができ、それが動作します。それは、グローバルを「ボトム」スコープと見なすのではなく、グローバルオブジェクト自体にアクセスできるようです。それは奇妙だ。 – Willem

答えて

-1

工場出荷時のパターンを使用できます。あなたのarbitrary.jsで

global.window = {hi: "hello world"}; 
var arb = require('./arbitrary')(global.window); 
arb.myFunc(); 

module.exports = function(window){ 
    var foo = window.bar; 

    function myFunc() { console.log(window.hi);} 

    return { 
     myFunc: myFunc 
    } 
} 
+1

「私にはarbitrary.jsの編集アクセスがない」と覚えておいてください。私はそこに輸出を入れることはできません。 – Willem

+0

ああ、私はそれを逃した。グローバルオブジェクトにアクセスするjsファイルを読み込むのは愚かなので、あなたは任意にアクセスできると思っていました。私はこれの背後にある動機付けを求めることができますか?なぜあなたはグローバルな範囲を意図的に汚染していますか? –

+0

私はそれがばかげていると理解します。基本的に自動的にjsファイルが作成され、作成方法を制御できません。私はそれらが編集されるたびに編集したくない(それはしばしばです)ので、私はむしろそれらが自動的に実行されるようにしたいと思います。 – Willem

0

あなたが提供されているコードは、実際に、少なくとものNode.js 6.2.0上で、動作します。

arbitrary.js

var foo = window.bar 

server.js

global.window = {foo: "foo"} 
require("./arbitrary.js") 

node server.jsは、すべてのエラーを与えるものではありません実行しています。

+0

何を待ちますか?私にとっては、global.window.barは動作しますが、window.barは動作しません。これは意図された動作ですか?私はノード6.1.0を実行しています。 問題がなくてもarbitrary.js内のウィンドウに物を割り当てることはできますか? – Willem

+0

@Willemはい、割り当て作業も。 –

+0

それは奇妙です。私はいくつかの私のノードとそのグローバルオブジェクト/スコープを行うために検索とデバッグがあると思います。情報をありがとう! – Willem

関連する問題