每个页面的Javascript?

时间:2012-06-29 23:23:05

标签: javascript jquery

我有一些简单的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 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分: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>

答案 2 :(得分:0)

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

如果您只有静态HTML页面,我建议将该代码放在脚本文件中(假设为dontleaveme.js)。然后在每个页面上,只需执行

<script src="dontleaveme.js"></script>

答案 3 :(得分:0)

一个好的应用程序设计将有一个布局文件或页眉和页脚文件,在每个页面上使用。然后很容易进行更改,例如添加影响网站上每个页面的脚本。如果你没有使用这种技术,这是一个很好的理由。