[英]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.