window.onload在Android WebView中不起作用

时间:2016-05-18 22:13:41

标签: javascript android android-webview

我正在研究2048游戏的问题,这是一个已经移植到Android的webapp:

https://github.com/uberspot/2048-android/issues/15

除了在应用程序中切换样式更改的按钮外,JavaScript似乎无处不在。 JavaScript可以在浏览器中运行,而不是在应用程序中。我认为它归结为nightmode.js中的一些代码开始:

window.onload = function() {
    var a = document.getElementById("night");
    a.onclick = function() {<<code that toggles day and night colors>>}

有没有人能解决为什么这个JavaScript没有运行?

编辑:当在桌面Chrome浏览器上并且屏幕调整大小时,按钮继续工作。但是,在Chrome中切换设备模式会发现这件事对移动设备无效。由于即使没有WebView也会发生这种情况,现在看起来只是一个javascript问题。

1 个答案:

答案 0 :(得分:1)

加载所有时会触发onload事件。这可能需要一些时间。 另外,window.onload可能会在以后被覆盖......

你可以试试这个:

var ready = function ( fn ) {

  // Sanity check
  if ( typeof fn !== 'function' ) return;

  // If document is already loaded, run method
  if ( document.readyState === 'complete'  ) {
    return fn();
  }

  // Otherwise, wait until document is loaded
  // The document has finished loading and the document has been parsed but sub-resources such as images, stylesheets and frames are still loading. The state indicates that the DOMContentLoaded event has been fired.
  document.addEventListener( 'interactive', fn, false );

  // Alternative: The document and all sub-resources have finished loading. The state indicates that the load event has been fired.
  // document.addEventListener( 'complete', fn, false );

};

// Example
ready(function() {
    // Do night-mode stuff...
});

请参阅:http://gomakethings.com/a-native-javascript-equivalent-of-jquerys-ready-method/