2010-11-29 4 views
0

Je suis en utilisant le code suivant que je l'origine trouvé de cette question: Prevent offline iphone webapp from opening link in SafarionClick Handler Syntaxe

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

La question décrit la solution, mais pas comment mettre en œuvre réellement. Aussi, j'essaie de faire exactement la même chose que dans la question originale. Merci!

Répondre

1

Vous pouvez faire quelque chose comme ça.

<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> 

Il capture tous les événements de clic et empêche le comportement par défaut. Il prend ensuite le contenu d'un modèle, qui est stocké dans une balise de script de type "text/html", et l'injecte dans le DOM. Tous les navigateurs ignorent les balises de script avec autre chose que «texte/javascript». Il est donc possible de masquer le contenu des modèles de cette façon. Je ne fais rien de dynamique avec le modèle ici, mais si vous voulez faire cela, vous pouvez utiliser quelque chose comme MicroTemplate de John Resig comme il le décrit ici: http://ejohn.org/blog/javascript-micro-templating/. Lorsque vous utilisez quelque chose comme MicroTemplate, vous devez fusionner le contenu du modèle avec les données dynamiques avant de l'injecter dans le DOM.

Une autre bonne option est templating modèle officiel de jQuery (co-écrit par Microsoft): http://api.jquery.com/category/plugins/templates/

+0

Merci !!! Parfait – Parker

+0

Microsoft, vraiment ?! –

+1

Oui, Microsoft contribue à jQuery. Jetez un coup d'oeil à cet article du blog jQuery: http://blog.jquery.com/2010/10/04/new-official-jquery-plugins-provide-templating-data-linking-and-globalization/ –