2011-08-03 129 views
4

好吧,我正在製作一個html5 canvas/javascript遊戲。我正在玩弄想讓任何想要把遊戲放在自己網站上的人通過一個鏈接到外部js文件的小腳本片段。在這種情況下,document.createElement或document.write有什麼更好?

在外部js文件中,整個遊戲都包含在內,我需要的是找到通過javascript代碼創建畫布標籤的最佳方式。

外部JS鏈接:

<script src="http://host.com/game.js"></script> 

這裏是帆布一行代碼,我需要插入到文檔:

<canvas id="canvas" style="display:block;margin:0px auto;" width="600" height="550">Your browser does not support the HTML5 canvas element.</canvas> 

1.我的第一選擇將使用..

document.write('<canvas id="canvas" style="display:block;margin:0px auto;" width="600" height="550">Your browser does not support the HTML5 canvas element.</canvas>'); 

但是,document.write被我的理解所折服。

2.我的下一個選擇是使用..

document.createElement(canvas); 
document.setAttribute(.....); 
document.appendChild(....); 

但是,此選項意味着我必須包括一個div或者與外部JS鏈接一些元素,這樣我可以追加畫布它。

3,我的最後一個已知選項是使用..

document.getElementById('divWrapper').innerHTML('my canvas code'); 

但是,此選項也意味着我必須包括與外部JS鏈接一個div,這樣我可以找到的標識div,並通過innerHTML寫入它。

最後提示:人們將能夠複製外部js鏈接並將其粘貼到自己的網站中(不會在頭部),並且如果我的選項需要使用div標籤腳本鏈接,這很好。我要儘可能少地複製/粘貼人物。

那麼你會推薦什麼選項?還有沒有更好的方法,我沒有提到?

+0

如果在分析HTML時調用了document.write,那就沒問題了。 –

+0

你的意思是通過在外部包含外部js鏈接,它會在html頁面被加載時解析它,這會不錯吧? – Jacob

+0

是的.....甚至可以在頭部很好(但在那裏是沒有意義的('head'中的'canvas'元素))。但是,在解析DOM之後,您不應該調用該方法*,否則會覆蓋內容。 –

回答

3

我也許應該做這一個答案。

如果在解析HTML時調用了document.write[docs](這似乎是這種情況),那麼使用它就很好。

我不會用它編寫更長的HTML代碼,但只有一行HTML是可以的。

優勢document.write(在這種情況下)

更容易爲用戶添加到他的頁面(只是複製和過去的)。

優勢innerHTML

您可以提供用戶指定元素的ID追加canvase的選項。這增加了用戶的靈活性,但需要額外的步驟。

+0

是的,我同意。我可能會使用它,但innerHTML似乎更像是一種傻瓜證明的解決方案,更少出錯的機會。 – Jacob

2

document.write已棄用,請不要使用它。 我會使用innerHTML。添加一個div是完全正確的,它使插入遊戲的人更容易控制插入它的位置。

+0

是的,innerHTML在我看來也是最好的方式。 – Jacob

+4

誰說它被棄用?有些情況下使用它是完全正常的。不幸的是,一些(我會假設,新的)JavaScript開發人員在錯誤的上下文中使用它。 –

1

document.write不是一個好主意,因爲它只在文檔完全加載之前調用。

一個好主意是使用DOM,因爲它是更多的X瀏覽器。

var canvas = document.createElement('canvas'); 
canvas.setAttribute(...); 
document.getElementById(...).appendChild(canvas); 
+0

如果我使用它,它會在文檔加載完成之前調用,雖然因爲外部js鏈接在主體中。在這種情況下它會好嗎?對? – Jacob

+0

@Jake如果您確定它始終在DOM組合期間執行,則可以使用'document.write'。使用這種資源的另一個可能的問題是,打印的字符串將被放置在'script'元素不在特定位置之後。 – Wanderson

相關問題