2010-11-29 85 views
0

我使用,我最初是从这个问题中发现下面的代码: Prevent offline iphone webapp from opening link in Safarionclick处理程序语法

bodyOnClickHandler = function(e) { 
    var target = e.target; 
    if (target.tagName == 'A') { 
     e.preventDefault(); 
     var targetUrl = target.getAttribute("href"); 
     window.location = targetUrl; 
    } 
} 

问题描述了解决方案,但不是如何真正实现它。另外,我试图做与原始问题完全相同的内容。谢谢!

回答

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/

+0

谢谢!完美 – Parker 2010-11-29 05:16:59