2010-05-27 21 views
0

我一直試圖按照客戶請求來做:當客戶點擊swf格式的頂部橫幅時,重定向到活動頁面,然後重定向到目標頁面。嵌入式Flash對象的HTML包裝div不能由jQuery「點擊」

您可以檢查什麼一直在做:如果您使用的是Firefox,Chrome或Safari http://ausdcf.org

,我懷疑你能到達目的地頁面。

但是,如果您使用IE或Opera,我對此表示懷疑。

我認爲造成這種奇怪的問題是:

的SWF ojbects沒有一個鏈接網址,因此

我要破解這樣的主題模板文件:

<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或嵌入式對象。我想這是造成這個問題的原因。另外,我不知道爲什麼它在一些瀏覽器的工作原理,但不是所有的...

我甚至試過的Z指數的CSS添加到包裝DIV這樣的:

#top_banner_clickable 
{ 
    z-index : 100; 
} 

沒有這不會這樣做,要麼...

有沒有辦法解決這個問題?

更新:

我試圖說服客戶使用谷歌的AdSense這樣的事情現在...

提前非常感謝。

回答

2

您無法使用javascript捕捉Flash對象頂部的單擊事件。你可以找到類似的問題herehere

您可以建議您的客戶應修改Flash的源代碼以處理點擊。如果這是不可能的,那麼使用容器Flash對象來託管橫幅。

+0

恐怕是這樣。但是,我仍然不明白如何將Firefox,Safari和Chrome重定向到desitnation頁...所以他們是「聰明的瀏覽器」? – 2010-05-31 07:30:00

+1

我不知道爲什麼會發生這種情況。至少有另一個SO用戶報告過相同的事情(請參閱我的答案中的第二個鏈接)。對象是其所在區域的完整所有者,您不能指望您可以使用瀏覽器功能來修改外觀或捕獲事件。 – kgiannakakis 2010-05-31 07:41:34

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動畫都將始終位於其他任何位置。

+0

非常感謝這個提示。然而,這仍然無法解決在IE中的問題...一些一定是錯的,我正在與它戰鬥:( – 2010-05-29 01:06:40