2010-11-29 89 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