[英]document.write with CoffeeScript
我知道我可能做错了,因为如果尝试使用try coffeescript功能可以正常工作,但令人惊讶的是,在我的示例中它不会产生任何结果:
<!--http://f.cl.ly/items/1u3Q3W101U2T18162v0V/test.html-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Page Title</title>
<script src="http://jashkenas.github.com/coffee-script/extras/coffee-script.js"></script>
</head>
<body>
<script type="text/coffeescript" >
document.write "<h2>TEST</h2>"
</script>
</body>
</html>
document.write
方法似乎不会向主体输出任何内容,在这种情况下,console.log可以正常工作,但document.write
却不能
即使尝试使用像我在javascript中使用的onload
处理程序运行脚本之后
var loaded = function(){
alert("hello");
}
document.addEventListener('DOMContentLoaded', loaded);
但是然后在coffeescript中
loaded = ->
alert "hello"
document.addEventListener "DOMContentLoaded", loaded
似乎没有触发事件方法,而不是JavaScript版本
任何人都可以帮助我找出正在发生的事情吗?
谢谢
如果在页面加载后运行控制台,则可以顺利进行以下工作:
CoffeeScript.eval('document.write "<h1>testing</h1>"')
但是仍然想知道为什么页面本身没有自动显示
如果使用Safari 5.0.3
该页面似乎没有显示
我对CoffeeScript一无所知,但不要使用document.write 。 这很邪恶: http : //javascript.crockford.com/script.html
使用createElement和appendChild / insertBefore代替:
var p = document.createElement("p");
p.innerHTML = "Lolz";
document.body.appendChild(p);
myDiv = document.getElementById("aDiv");
document.body.insertBefore(p, myDiv);
document.write在Safari中也有问题。
这是一个骗子,但经过调查,我得到了您的答案:
coffee-script.js
工作方式是在文档加载后查找并运行type="text/coffeescript"
脚本。 对于Safari,这意味着
<script type="text/coffeescript">
document.write "<h2>TEST</h2>"
</script>
相当于
<script type="text/javascript">
window.addEventListener('DOMContentLoaded', function() {
document.write("<h2>TEST</h2>");
}, false);
</script>
默默地失败了。 请注意,使用Erlend描述的document.createElement
方法或jQuery之类的库进行插入将可以正常工作。
由于这在Chrome中有效,因此我将其称为Safari bug。 但是,故事的真正寓意是: 不要使用document.write。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.