我对整个html语言都很陌生(最近开始建立我自己的网站)。
让我描述一下我的问题:
我有一种文件树看菜单设置,允许用户浏览我的网站。其中的每个项目都是指向html页面的链接,该页面包含使用syntaxhighlighter突出显示的文件版本:
<a href="files/hl_file.html" target="content_page">file.cpp</a>
然而,我希望用户能够右键单击此链接并使用“另存为...”菜单来保存文件本身。我现在设置的方式不允许这样做,因为右键单击保存只会保存突出显示的html文件hl_file.html
,而不是file.cpp
。
在上面的代码"content_page"
中,iframe
实际上包含整个网页。
有没有办法在处理右键单击下载的href中构建一些额外的内容?
答案 0 :(得分:3)
没有用于直接下载的特殊href,但您可以尝试使用自定义菜单替换右键菜单,该菜单包含您要公开的下载的链接:
演示:http://labs.abeautifulsite.net/archived/jquery-contextMenu/demo/
via:http://www.abeautifulsite.net/blog/2008/09/jquery-context-menu-plugin/
将您的HTML设置为:
<a href="..." data-downloadhref="...">File</a>
然后在你的“下载”回调中使用:
document.location = $(el).data('downloadhref')
编辑:这使用jQuery,因此您需要使用并熟悉它才能使其正常运行。您可能会找到一个类似的,无jQuery的脚本。只需谷歌浏览Javascript Context Menu
。
答案 1 :(得分:1)
将所有链接放在特殊类中的代码中(例如.syntax
)。然后,您可以使用以下代码更改元素的行为:
<!DOCTYPE html>
<html>
<title>basic demo</title>
<script>
window.addEventListener('load',function(){
// run this function when the website is loaded completly
// use DOMContentLoaded if you prefer to load it earlier.
for(var i=0, p; p = document.querySelectorAll('a.syntax')[i];++i){
// this will run through all anchor tags tagged with the class 'syntax'
p.oldhref = p.href; // save old href
p.addEventListener('mousedown',function(e){
// Capture mouse events
if(e.button === 2) // Check for right click
this.href = this.firstChild.data; // Right click
// Please ensure that your a tag contents the correct link.
// If not, alter it to 'src/' + this.firstChild.data
// or whatever your src directory is.
else
this.href = this.oldhref; // left click, use original href
},false);
}
},false);
</script>
<body>
<a href="http://google.de" class="syntax">http://stackoverflow.com</a>
</body>
</html>
这不会改变浏览器的行为,因为它只是改变了URL。见http://jsfiddle.net/wHB3m/1/