【问题标题】: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/

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 1970-01-01
    • 2016-03-11
    • 1970-01-01
    • 2015-10-29
    • 2015-04-15
    相关资源
    最近更新 更多