Javascript 嵌入flash对象上的HTML包装器div不能为;可点击“;通过jQuery
我一直在尝试按照客户的要求做:一旦客户点击swf格式的顶部横幅,就重定向到活动页面,然后再重定向到目标页面 您可以在以下位置查看已完成的操作: 如果您使用的是Firefox、Chrome或Safari,我怀疑您可以访问目标页面 然而,如果你正在使用IE或Opera,我对此表示怀疑 我认为造成这种奇怪问题的原因是: swf ojbects没有指向url的链接,因此 我必须像这样破解主题模板文件:Javascript 嵌入flash对象上的HTML包装器div不能为;可点击“;通过jQuery,javascript,jquery,flash,Javascript,Jquery,Flash,我一直在尝试按照客户的要求做:一旦客户点击swf格式的顶部横幅,就重定向到活动页面,然后再重定向到目标页面 您可以在以下位置查看已完成的操作: 如果您使用的是Firefox、Chrome或Safari,我怀疑您可以访问目标页面 然而,如果你正在使用IE或Opera,我对此表示怀疑 我认为造成这种奇怪问题的原因是: swf ojbects没有指向url的链接,因此 我必须像这样破解主题模板文件: <div id="header">'; /*
<div id="header">';
/*
* A quick and dirty way to put some swf into PHP, and rotate among them ...
*/
//available banners
$banners = array(
'http://localhost/smf/flash/banner_fertalign_1.swf',
'http://localhost/smf/flash/banner_fertalign_2.swf',
'http://localhost/smf/flash/banner_fertalign_3.swf'
);
//get random banner
srand((double) microtime() * 1000000);
$rand = rand(0,count($banners)-1);
echo '<div id="top_banner_clickable">';
echo '<div id="top_banner_wrapper">';
echo '<object width="400" height="60">';
echo '<param name="wmode" value="transparent">';
echo '<embed wmode="transparent" src="'.$banners[$rand].'" ';
echo 'width="400" height="60" type="application/x-shockwave-flash"';
echo 'pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" />';
echo '</object>';
echo '</div>';
echo '</div>';
我对Flash或嵌入式对象一无所知。我想这就是问题的原因。另外,我不知道为什么它可以在一些浏览器上使用,但不是所有的浏览器
我甚至尝试向css中的包装器div添加z索引,如下所示:
/* master.js */
$(document).ready(function()
{
$("#top_banner_clickable").click(function()
{
window.location ="http://ausdcf.org/campaign/";
});
});
#top_banner_clickable
{
z-index : 100;
}
echo '<div id="top_banner_clickable">';
echo '<div id="top_banner_wrapper">';
echo '<object width="400" height="60">';
echo '<param name="wmode" value="transparent">';
echo '<embed wmode="transparent" src="'.$banners[$rand].'" ';
echo 'width="400" height="60" type="application/x-shockwave-flash"';
echo 'pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" />';
echo '</object>';
echo '<div id="clickableoverlay"></div>'; // float this div above the movie
echo '</div>';
echo '</div>';
不,这也不行
有办法解决这个问题吗
更新:
<div id="header">';
/*
* A quick and dirty way to put some swf into PHP, and rotate among them ...
*/
//available banners
$banners = array(
'http://localhost/smf/flash/banner_fertalign_1.swf',
'http://localhost/smf/flash/banner_fertalign_2.swf',
'http://localhost/smf/flash/banner_fertalign_3.swf'
);
//get random banner
srand((double) microtime() * 1000000);
$rand = rand(0,count($banners)-1);
echo '<div id="top_banner_clickable">';
echo '<div id="top_banner_wrapper">';
echo '<object width="400" height="60">';
echo '<param name="wmode" value="transparent">';
echo '<embed wmode="transparent" src="'.$banners[$rand].'" ';
echo 'width="400" height="60" type="application/x-shockwave-flash"';
echo 'pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" />';
echo '</object>';
echo '</div>';
echo '</div>';
我现在正试图说服客户使用谷歌AdSense来做这类事情……
非常感谢。我认为问题在于Flash正在吞没click事件,并阻止在文档的其余部分冒泡。或者Flash干扰了jQuery针对不一致模型的解决方案。因此,我认为要做的是添加一个div,它漂浮在flash电影之上,但它是(电影的)兄弟姐妹或它的父母之一。大概是这样的:
/* master.js */
$(document).ready(function()
{
$("#top_banner_clickable").click(function()
{
window.location ="http://ausdcf.org/campaign/";
});
});
#top_banner_clickable
{
z-index : 100;
}
echo '<div id="top_banner_clickable">';
echo '<div id="top_banner_wrapper">';
echo '<object width="400" height="60">';
echo '<param name="wmode" value="transparent">';
echo '<embed wmode="transparent" src="'.$banners[$rand].'" ';
echo 'width="400" height="60" type="application/x-shockwave-flash"';
echo 'pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" />';
echo '</object>';
echo '<div id="clickableoverlay"></div>'; // float this div above the movie
echo '</div>';
echo '</div>';
echo';
回声';
回声';
回声';
回声';
回声';
回显“”;//将此div漂浮在电影上方
回声';
回声';
使用CSS将#clickableoverlay放置在电影的顶部,并将您的
click()
应用到该位置。如果
出现在
之后,我认为您不需要在这里使用z-index。请小心使用wmode=“transparent”
(您就是!)或wmode=“不透明”
。如果您使用wmode=“window”
,flash电影将始终位于其他所有内容之上,无论您尝试使用什么CSS 我认为问题在于Flash吞噬了click事件,并阻止了文档其余部分的冒泡。或者Flash干扰了jQuery针对不一致模型的解决方案。因此,我认为要做的是添加一个div,它漂浮在flash电影之上,但它是(电影的)兄弟姐妹或它的父母之一。大概是这样的:
/* master.js */
$(document).ready(function()
{
$("#top_banner_clickable").click(function()
{
window.location ="http://ausdcf.org/campaign/";
});
});
#top_banner_clickable
{
z-index : 100;
}
echo '<div id="top_banner_clickable">';
echo '<div id="top_banner_wrapper">';
echo '<object width="400" height="60">';
echo '<param name="wmode" value="transparent">';
echo '<embed wmode="transparent" src="'.$banners[$rand].'" ';
echo 'width="400" height="60" type="application/x-shockwave-flash"';
echo 'pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash" />';
echo '</object>';
echo '<div id="clickableoverlay"></div>'; // float this div above the movie
echo '</div>';
echo '</div>';
echo';
回声';
回声';
回声';
回声';
回声';
回显“”;//将此div漂浮在电影上方
回声';
回声';
使用CSS将#clickableoverlay放置在电影的顶部,并将您的
click()
应用到该位置。如果
出现在
之后,我认为您不需要在这里使用z-index。请小心使用wmode=“transparent”
(您就是!)或wmode=“不透明”
。如果您使用wmode=“window”
,flash电影将始终位于其他所有内容之上,无论您尝试使用什么CSS 不能使用javascript捕捉flash对象顶部的点击事件。你可以找到类似的问题和答案
您可以建议您的客户修改flash的源代码以处理点击。如果这是不可能的,那么使用容器flash对象来承载横幅。您不能使用javascript捕捉flash对象顶部的点击事件。你可以找到类似的问题和答案
您可以建议您的客户修改flash的源代码以处理点击。如果这是不可能的,那么使用容器flash对象来承载横幅。非常感谢您的提示。然而,这仍然不能解决IE中的问题。。。一定是出了什么问题,我在与之抗争:(非常感谢您的提示。但是,这仍然无法解决IE中的问题……一定是出了什么问题,我在与之抗争:(恐怕是这样。但是,我仍然不明白为什么Firefox、Safari和Chrome会重定向到设计页面……所以它们是“智能浏览器”?我不知道为什么会发生这种情况。至少另一个SO用户报告了相同的事情(请参阅我答案中的第二个链接)。但这不是预期的行为。Flash对象是其区域的完全所有者。您不能期望您可以使用浏览器功能修改外观或捕获事件。恐怕是这样。但是,我仍然不明白为什么Firefox、Safari和Chrome会重定向到设计页面……所以它们是“智能浏览器”?我不知道为什么会发生这种情况。至少另一个SO用户报告了相同的情况(请参阅我回答中的第二个链接)。但这不是预期的行为。Flash对象是其区域的完全所有者。您不能期望您可以使用浏览器功能修改外观或捕获事件。