我有一个点击事件,我的操作导航到某个网址,然后显示/隐藏按钮。我正在使用这个:
ViewManager.js
$("#btn").on("click", function(event){
window.location.href= '#test.html';
}
在我导航到该页面后,我有一个按钮,我需要根据target.id显示隐藏。(在这种情况下为btn
)。如果btn
是目标ID,我隐藏按钮,否则我会显示按钮,如下所示:
account.js
if (event.target.id == 'btn'){
$('#submit-account-detail').css('display', 'none');
else {
$('#submit-account-detail').css('display', 'block');
}
现在问题是,chrome完全处理全局事件,但firefox抛出错误:
ReferenceError: event is not defined
在导航到其他网址之前,我将事件作为参数传递。由于firefox不会在全局处理事件,因此会抛出错误。我尝试查找源代码,他们建议将事件作为参数传递给click事件(已经完成)。但是在页面导航之后,如何才能使事件可见?
EDIT -------------------
我在ViewManager.js脚本中执行了类似的操作:$("#btn").on("click", function(event){
targetId = window.event;
window.location.href= '#test.html';
}
然后我在account.js脚本中测试了条件:
if (targetId && targetId === 'btn'){
$('#submit-account-detail').css('display', 'none');}
当它定义了targetId时它可以正常工作,但是当它ReferenceError: targetId is not defined
时抛出targetId != 'btn'
......我是以错误的方式声明var吗?
答案 0 :(得分:0)
页面导航后,您无法在新页面中显示旧事件对象。不过,您可以在get请求中或通过设置cookie传递有关上一个事件的信息。
在这里,看起来你只是改变了位置的哈希值。正确的方法是window.location.hash = "#something"
。在这种情况下,您的页面实际上不会重新加载。这意味着如果设置全局变量,则可以从其他函数访问它。
有多种方法可以定义全局变量。
var varname
,并将varname
设置为任意值。window.varname
设置为任意值。您只需使用varname
就可以使用此变量,除非您有另一个同名的局部变量。
我的情况,请尝试在事件处理程序中设置window.event = event
。