0

我有一些简单的 JQuery / Javascript 来为所有外部超链接执行一些简单的逻辑:

<script>
    $("a[href^='http://']:not([href*='"+location.hostname+"']),[href^='https://']:not([href*='"+location.hostname+"'])")
    .addClass("external")
    .attr("target","_blank")
    .attr("title","Opens new window").click(function(e) {alert('You are leaving mysite and going somewhere else, you crazy dude')});
</script>

这对于一页来说很好。但是,我希望在我的应用程序的每个网页中都有它,并且 100% 确定它在那里。

有什么好的技巧可以做到这一点吗?

我唯一能想到的是,如果您使用的是 java 架构,那么要有一个基本 JSP 并确保基本 JSP 调用它。

有更好的想法吗?

4

4 回答 4

2

你不需要一些服务器端框架...如果你使用一些模板库(玉把手、胡子、jquery 模板),或者如果你只是分离出你的 HTML 文件,你可以用 jquery 将它们拉入并在页面上呈现它们. 查看 .load 函数。

此外,即使它们是静态的,您也应该分离出您的 html 页面。

于 2012-06-29T23:29:36.040 回答
1

将其包装在一个函数中并调用该函数。然后你可以只调用函数并将实现留给函数调用。由于您没有指定服务器端技术,例如 asp.net 或 php,当然会有其他选项(部分视图或模板)使用它。

function doStuff(){

   $("a[href^='http://']:not([href*='"+location.hostname+"']),     
     [href^='https://']:not([href*='"+location.hostname+"'])")
     .addClass("external")
     .attr("target","_blank")
     .attr("title","Opens new window").click(function(e) {alert('You are leaving mysite and going somewhere else, you crazy dude')});

}

<script>
   doStuff();
</script>
于 2012-06-29T23:26:52.337 回答
0

这取决于您的网站的结构。如果您有一个服务器端框架(如您的 JSP 示例),那么您可以拥有一个确保脚本以某种方式被包含在内的函数。

如果您只有静态 HTML 页面,我的建议是将该代码放在脚本文件中(比方说dontleaveme.js)。然后在每一页上,就做

<script src="dontleaveme.js"></script>
于 2012-06-29T23:26:50.210 回答
0

一个好的应用程序设计将有一个布局文件或页眉和页脚文件,用于每个页面。然后很容易进行更改,例如添加脚本,这会影响站点上的每个页面。如果您不使用这种技术,这是一个很好的开始。

于 2012-06-29T23:28:44.573 回答