我正在运行Visual Studio 2008和.NET 3.5
我使用javascript创建了一个javascript方法(window.unbeforeload),以便在尝试退出网站时向用户发送消息。不幸的是,每次用户点击未在站点外重定向的链接时,都会显示相同的消息。
解决方案:让jquery处理站点内的所有链接点击。但这不起作用。
<asp:Content ID="ContentHead" ContentPlaceHolderID="head" runat="server">
<script type="text/javascript" src="HTML/jquery.js"></script>
<script type="text/javascript">
$(document).live('click',function() {
$("a").click(function() {
alert("Hello world!");
});
});
</script>
//许多其他功能
<script type="text/javascript">
window.onbeforeunload = function() {
return "REALLY?"
}
</script>
</asp:Content>
在这里,我尝试点击网站内的链接创建提醒,但没有成功。
如何在我的应用程序中使Jquery工作?
Sideinfo:我已经验证了jquery文件存在于HTML / jquery.js但是尽管如此,Visual Studio 2008会发出一个未找到文件的警告。另一个与jquery文件具有完全相同路径的.aspx页面不会发出此警告。
更新:
<%@ Page Language="C#" MasterPageFile="~/Manage/ConceptManager.Master" AutoEventWireup="true" CodeBehind="ConceptManager.aspx.cs" Inherits="DynamicForm.Manage.ConceptManagerPage" %>
<%@ Register src="Controls/Element_MetadataEditor_FieldNode.ascx" tagname="Element_MetadataEditor_FieldNode" tagprefix="uc1" %>
<%@ Register src="Controls/Element_MetadataEditor_TemplateNode.ascx" tagname="Element_MetadataEditor_TemplateNode" tagprefix="uc3" %>
<%@ Register src="Controls/CategoryAttributes.ascx" tagname="CategoryAttributes" tagprefix="usercontrol" %>
<%@ Register Src="Controls/ConfirmDialog.ascx" TagName="DeleteConfirmDialog" TagPrefix="usercontrol" %>
<%@ Register Src="Controls/ConfirmDialog.ascx" TagName="ConfirmDialog" TagPrefix="usercontrol" %>
<%@ Register src="Controls/AddReferenceDialog.ascx" TagName="AddReferenceDialog" TagPrefix="usercontrol" %>
<%@ Register src="Controls/AddIncludeDialog.ascx" TagName="AddIncludeDialog" TagPrefix="usercontrol" %>
<%@ Register Assembly="ExtExtenders" Namespace="ExtExtenders" TagPrefix="ExtExt" %>
<asp:Content ID="ContentHead" ContentPlaceHolderID="head" runat="server">
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
var mydomain = "mysite.com";
var leavemessage = "Are you sure you wish to leave?";
var filterMySitefunction = function(index) {
return $(this).attr("href").indexOf(mydomain) > -1;
}
var filterOtherSitefunction = function(index) {
return $(this).attr("href").indexOf(mydomain) == -1;
}
$("a").filter(filterMySitefunction).click(function() {
window.onbeforeunload = function() { };
});
$("a").filter(filterOtherSitefunction).click(function() {
window.onbeforeunload = function() {
return leavemessage;
};
});
});
</script>
</asp:Content>
答案 0 :(得分:5)
我完全不知所措。对上面的Peeter没有冒犯,但这似乎是一个过于复杂的解决方案,当通过做类似的事情可以实现同样的目标
$(function($){
$('a').not('[href*="mydomain.com"]')
.click(function(e){
// visiting some other domain!
});
});
优秀的jQuery: In Action书还建议只检查a[href^="http://"]
以检查外部链接,这就是我坚持这样做的方式。
就个人而言(因为我对这一点有点偏执),我把两者拼凑在一起作为一种全能(以防万一有人或某事投入内部绝对URL)。
$('a[href^="http://"]').not('[href*="mydomain.com"]')
.click(function(e){
// visiting some other domain!
});
答案 1 :(得分:3)
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.5.2/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function(){
var mydomain = "mysite.com";
var leavemessage = "Are you sure you wish to leave?";
var filterMySitefunction = function(index) {
return $(this).attr("href").indexOf(mydomain) > -1;
}
var filterOtherSitefunction = function(index) {
return $(this).attr("href").indexOf(mydomain) == -1;
}
$("a").filter(filterMySitefunction).click(function() {
window.onbeforeunload = function(){};
});
$("a").filter(filterOtherSitefunction).click(function() {
window.onbeforeunload = function(){
return leavemessage;
};
});
});
</script>
<a href="mysite.com">Omg</a>
<a href="othersite.com">Omg</a>
答案 2 :(得分:1)
尝试更改此内容:
$(document).live('click',function() {
$("a").click(function() {
alert("Hello world!");
});
});
到此:
$(document).ready(function() {
$("a").click(function() {
alert("Hello world!");
});
});
答案 3 :(得分:0)
您无需进行实时点击。
$(function() {
$("a").click(function() {
alert("Hello world!");
});
});