【问题标题】:onClick Handler SyntaxonClick 处理程序语法
【发布时间】:2011-05-17 02:25:36
【问题描述】:
我正在使用我最初从这个问题中找到的以下代码:
Prevent offline iphone webapp from opening link in Safari
bodyOnClickHandler = function(e) {
var target = e.target;
if (target.tagName == 'A') {
e.preventDefault();
var targetUrl = target.getAttribute("href");
window.location = targetUrl;
}
}
问题描述了解决方案,但没有描述如何实际实施。另外,我正在尝试做与原始问题完全相同的事情。谢谢!
【问题讨论】:
标签:
javascript
iphone
web-applications
safari
onclick
【解决方案1】:
你可以这样做。
<body>
<a href="http://google.com">Click me</a>
<div id="dynamic-content"></div>
<script id="template" type="text/html">
<h1>Hello</h1>
<p>This is a template</p>
</script>
<script>
document.addEventListener('click', function (e) {
var target = e.target;
if (target.tagName == 'A') {
e.preventDefault();
document.getElementById('dynamic-content').innerHTML = document.getElementById('template').innerHTML;
}
}, false);
</script>
</body>
它捕获所有点击事件并阻止默认行为。然后它从模板中获取内容,该模板存储在类型为“text/html”的脚本标签中,并将其注入到 DOM 中。所有浏览器都会忽略除“text/javascript”之外的任何脚本标签,因此以这种方式隐藏模板内容是安全的。我在这里没有对模板做任何动态操作,但如果你想这样做,你可以使用 John Resig 的 MicroTemplate 之类的东西,正如他在此描述的那样:http://ejohn.org/blog/javascript-micro-templating/。在使用 MicroTemplate 之类的东西时,您需要在将模板内容注入 DOM 之前将其与动态数据合并。
另一个不错的模板选择是 jQuery 的官方模板(由微软合着):http://api.jquery.com/category/plugins/templates/