我一直在尝试按客户端要求执行此操作:一旦客户点击了swf格式的顶部横幅,就会重定向到广告系列页面,然后再转到目标网页。
您可以查看已执行的操作:http://ausdcf.org
如果您使用的是Firefox,Chrome或Safari,我怀疑您可以访问目标网页。
但是,如果您使用的是IE或Opera,我对此表示怀疑。
我认为导致这样一个奇怪的问题是:
swf ojbects没有指向url的链接,SO
我必须像这样破解主题模板文件:
<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>';
相关的jQuery代码是这样的:
/* master.js */
$(document).ready(function()
{
$("#top_banner_clickable").click(function()
{
window.location ="http://ausdcf.org/campaign/";
});
});
我对Flash或嵌入对象一无所知。我猜这就是这个问题的原因。另外,我不知道为什么它适用于某些浏览器但不是全部......
我甚至尝试在css中的包装div中添加一个z-index,如下所示:
#top_banner_clickable
{
z-index : 100;
}
不,这不行,或者......
有没有办法解决这个问题?
更新:
我试图说服客户现在使用Google AdSense进行此类活动......
非常感谢提前。
答案 0 :(得分:2)
您不能使用javascript来捕捉flash对象上的点击事件。您可以找到类似的问题here和here。
您可以建议您的客户修改Flash的源代码以处理点击。如果无法做到这一点,请使用容器flash对象来托管横幅。
答案 1 :(得分:1)
我认为问题在于Flash正在吞噬点击事件并防止冒泡到文档的其余部分。或者Flash正在干扰jQuery针对event propagation的不一致模型的解决方案。所以我认为要做的是添加一个漂浮在flash电影之上的div,但它是一个兄弟(电影或其中一个父母)。像这样:
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>';
使用CSS让#clickableoverlay位于电影的顶部并将click()
应用于该电影。如果<div>
出现在<object>
之后,我认为你不应该在这里使用z-index。小心使用wmode="transparent"
(你是!)或wmode="opaque"
。如果您使用wmode="window"
,则无论您尝试使用哪种CSS,Flash影片都将始终位于其他所有内容之上。