2011-08-03 89 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

相关问题