我有一些简单的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调用它。
有更好的想法吗?
答案 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)
一个好的应用程序设计将有一个布局文件或页眉和页脚文件,在每个页面上使用。然后很容易进行更改,例如添加影响网站上每个页面的脚本。如果你没有使用这种技术,这是一个很好的理由。