Do not use did-finish-load to detect whether WebContents is ready
authorCheng Zhao <zcbenz@gmail.com>
Tue, 15 Sep 2015 01:21:15 +0000 (09:21 +0800)
committerCheng Zhao <zcbenz@gmail.com>
Tue, 15 Sep 2015 01:21:15 +0000 (09:21 +0800)
The WebContents JS object can be created way later after the C++ object
gets created.

atom/browser/api/lib/web-contents.coffee

index 1bb82de..3a2abfb 100644 (file)
@@ -44,10 +44,8 @@ wrapWebContents = (webContents) ->
 
   # Make sure webContents.executeJavaScript would run the code only when the
   # web contents has been loaded.
-  webContents.loaded = false
-  webContents.once 'did-finish-load', -> @loaded = true
   webContents.executeJavaScript = (code, hasUserGesture=false) ->
-    if @loaded
+    if @getUrl() and not @isLoading()
       @_executeJavaScript code, hasUserGesture
     else
       webContents.once 'did-finish-load', @_executeJavaScript.bind(this, code, hasUserGesture)