Browse Source

webContents: fix executejavascript when called before page load

deepak1556 9 years ago
parent
commit
4e6b148eaa
2 changed files with 12 additions and 2 deletions
  1. 4 2
      lib/browser/api/web-contents.js
  2. 8 0
      spec/api-browser-window-spec.js

+ 4 - 2
lib/browser/api/web-contents.js

@@ -117,9 +117,11 @@ let wrapWebContents = function (webContents) {
       hasUserGesture = false
     }
     if (this.getURL() && !this.isLoadingMainFrame()) {
-      return asyncWebFrameMethods.call(this, requestId, 'executeJavaScript', callback, code, hasUserGesture)
+      asyncWebFrameMethods.call(this, requestId, 'executeJavaScript', callback, code, hasUserGesture)
     } else {
-      return this.once('did-finish-load', asyncWebFrameMethods.bind(this, requestId, 'executeJavaScript', callback, code, hasUserGesture))
+      this.once('did-finish-load', () => {
+        asyncWebFrameMethods.call(this, requestId, 'executeJavaScript', callback, code, hasUserGesture)
+      })
     }
   }
 

+ 8 - 0
spec/api-browser-window-spec.js

@@ -870,6 +870,14 @@ describe('browser-window module', function () {
       })
       w.loadURL(server.url)
     })
+
+    it('executes after page load', function (done) {
+      w.webContents.executeJavaScript(code, function(result) {
+        assert.equal(result, expected)
+        done()
+      })
+      w.loadURL(server.url)
+    })
   })
 
   describe('deprecated options', function () {