簡體   English   中英

Win8:在default.js之外訪問default.html中的頁面元素

[英]Win8: Accessing page elements in default.html outside of default.js

我在default.html中具有以下頁面元素:

<div id ="content">
   <div id="output"></div>
</div>

default.js中:

...     
args.setPromise(WinJS.UI.processAll().done(function()
{
   var theOutput = document.getElementById("output");
   theOutput.innerText = "This is the output";
}));
....

這樣可以成功生成僅帶有文本“ This is the output”的應用程序

但是,如果我將其移至新腳本script.js中:

(function ()
{
  "use strict";

  var theOutput = document.getElementById("output");
  theOutput.innerText = "This is the output";
}()); 

並在default.html中添加script.js作為腳本參考:

<script src="/js/script.js"></script><script src="/js/script.js"></script>

我得到錯誤

JavaScript運行時錯誤:無法設置未定義或空引用的屬性“ innerText”

如何在default.js之外的其他腳本中訪問輸出div?

事實證明,script.js需要等待頁面元素被完全處理。 以下代碼運行良好:

(function ()
{
   "use strict";
   WinJS.Utilities.ready(function ()
   {
     var theOutput = document.getElementById("output");
     theOutput.innerText = "This is the output";
   });
}());

您還可以處理DOMContentLoaded事件,該事件在構建DOM之后就會觸發(盡管圖像可能尚未完全加載)。 這是我在許多基於Windows的畫布上的游戲中所做的。

將此添加到主要功能:

document.addEventListener("DOMContentLoaded", initialize, false);

然后只需執行要在初始化中觸發的代碼即可:

function initialize() {
    //Init Canvas
    canvas = document.getElementById("canvas");
    ctx = canvas.getContext("2d");

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM