Einreichen eines Fensters in browserify

8

Eine meiner Abhängigkeiten verwendet Folgendes, um ein Fenster an die Schließung zu übergeben:

%Vor%

Vorläufig kann ich es nur in etwas Sinnvolleres ändern, damit es browserfig nicht bricht, aber gibt es eine Methode, mit der ich einen Wert für this in einem Browsermodul erzwingen kann?

    
wheresrhys 22.12.2013, 00:03
quelle

2 Antworten

3

Ich habe eine browserify-Transformation namens "modify" geschrieben , die im Allgemeinen tun sollte, was Sie wollen, also den fehlerhaften Code einpacken ein IIFE, das ungefähr so ​​aussieht:

%Vor%

Tatsächlich ist meine Implementierung nicht viel komplizierter als das.

Die ursprüngliche Idee war, ein Globals-umweltschädliches "Modul" zu exportieren, als wäre es ein CommonJS-Modul (z. B. AngularJS-Export window.angular ), aber weil es diesen Wrapper enthält, sollte es den Trick machen.

Anweisungen finden Sie in der README. Wenn das fehlerhafte Skript nicht wirklich etwas hat, das es vernünftig exportieren kann, muss es einfach window exportieren (was zu module.exports = window['window'] führt) oder einen beliebigen Namen, der nicht existiert (was zu undefined führt).

Wenn Sie auf das Objekt window in Ihrem eigenen Browsercode zugreifen möchten, sehen Sie sich auch das globale -Modul an. Dies bietet einen schönen Wrapper für den sicheren Zugriff auf Browser-Globals in CommonJS-Modulen.

    
Alan Plum 27.10.2014, 19:58
quelle
0

Um dieses spezielle Problem zu lösen, wird eine einfache Transformation, die den Code in eine Self-Calling-Funktion umschließt, die Aufgabe übernehmen.

CoffeeScript

%Vor%

JavaScript

%Vor%

Schreibtransformationen: Ссылка

    
demux 15.04.2015 19:44
quelle