问题与Firefox在调用函数时将浏览器窗口刷新到100%有关。 如果浏览器视图是75%,并且我在链接上使用.click方法 - 页面刷新为100%那么函数执行。 Safari执行该功能而不刷新窗口。
现在代码如下:
function hideFlag(){
$("#ftm").click(function () {
var stageWidth = $("#window_div").width();
if (stageWidth <= 1200){
$( "#window_div" ).animate({
width: 1250,
opacity: ".8",
}, 1000 );
$( "#flagDiv" ).animate({
opacity: "0",
}, 1000 );
}
else{
$( "#window_div" ).animate({
width: 500,
opacity: ".6",
}, 1000 );
$( "#flagDiv" ).animate({
opacity: "1",
}, 1000 );
}
});
}
在Firefox中,如果我的浏览器视图缩小到75%并且我用.mouseenter替换了.click()方法,则在没有重新绘制屏幕或在mouseenter上调整大小的情况下对div进行动画处理。我不明白click()和mouseenter()实现之间的区别。
解决了它。
这比我想象的要简单得多。正确使用“归还假”; click方法的参数 解决了我的问题。修改后的代码如下:
function hideFlag(){
$("#ftm").click(function () {
var stageWidth = $("#window_div").width();
if (stageWidth <= 1200){
$( "#window_div" ).animate({
width: 1250,
opacity: ".8",
}, 1000 ); return false;
$( "#flagDiv" ).animate({
opacity: "0",
}, 1000 ); return false;
}
else{
$( "#window_div" ).animate({
width: 500,
opacity: ".6",
}, 1000 );return false;
$( "#flagDiv" ).animate({
opacity: "1",
}, 1000 );return false;
}
});
}
感谢大家的帮助。
答案 0 :(得分:0)
这不是对你的问题的直接回答,但是评论的时间相当长。
你正在使用jQuery。我想你错过了整个跨浏览器库的事情。变化
stageWidth = document.getElementById("window_div").clientWidth
到
stageWidth = $("#window_div").width()
不需要特定于浏览器的代码。使用jQuery时也不需要addEventHandler
函数。它会照顾浏览器之间的差异,因此您不必这样做。这意味着您可以将setUpClickHandler
功能更改为:
function setUpClickHandler() {
$('#ftm').click(hideFlag);
$('#ath').click(showFlag);
}
并将showFlag
更改为:
function showFlag(e){
$('#flagDiv').show();
}
并更改
addEventHandler(window, "load", setUpClickHandler, false);
到
$(window).load(setUpClickHandler);