2010-04-21 84 views
1

我正在製作一個非常簡單的使用ASP.NET 2.0的廣告按鈕系統。爲什麼我的ASP.NET超鏈接不能在IE中工作?

廣告是一個150x150px的廣場,顯示在**上。
(向下滾動一下,你會在屏幕右側看到鮮綠色的「憤怒的章魚」。)

現在,我不是**的管理員。相反,我是angryoctopus.net的管理員
因此,我無法隨意更改廣告顯示代碼。所以我給**的這段程式碼,很好地展示我們的廣告,同時仍然允許我以自定義在我身邊的事情後端代碼:

<iframe src="http://www.angryoctopus.net/Content/Ad/150x150.aspx" 
frameborder="0" width="150" height="150" scrolling="no" 
style="padding: 0; margin: 0;"></iframe> 

你會發現這個片段在網頁的源代碼**

在我的身邊,代碼如下所示:

<%--150x150.aspx--%> 
<asp:HyperLink runat="server" NavigateUrl="http://www.angryoctopus.net/" Target="_top"> 
    <asp:Panel ID="pnlMain" runat="server" BackColor="#D1E231" 
     style="padding: 0; margin: 0" Width="150" Height="150"> 
     <asp:Image runat="server" ImageUrl="http://www.angryoctopus.net/Content/Ad/150x150.png" 
      BorderStyle="None" style="padding: 0; margin: 0" /> 
    </asp:Panel> 
</asp:HyperLink> 

...而且也爲命中計數一些無關緊要的後端C#代碼。據我所知,從代碼的角度來看,這看起來很好,很好。一切適用於Firefox和Chrome。此外,一切似乎在IE8 in all of my tests工作。我還沒有測試過IE7。

但是,當您在IE(8)中查看**時,超鏈接不會執行任何操作,並且遊標不會指示超鏈接即使存在。儘管您可以在狀態欄中看到目標網址。

我認爲**使用XHTML 1.0 Strict可能會導致問題,但這可能會影響Firefox和Chrome的權利? (我的aspx頁面使用XHTML 1.0 Transitional)

我唯一的理論是,一些隨機的CSS類可能會將一個奇怪的屬性應用到我的iframe,但我希望這會影響Firefox和Chrome。

這是IE的安全問題嗎?有誰知道**網站的哪一部分可能會阻止IE中的超鏈接?我怎樣才能解決這個問題,而不必在**的網站上硬編碼任何東西?是否有替代iframe可以完成同樣的工作而不需要複雜的腳本?

+0

奇怪的是,你可以右鍵單擊並選擇打開鏈接,並且工作正常。重做你的顯示機制是否可以接受?也就是說,沒有必要擁有您擁有的特定服務器控件組合。 – JustLoren 2010-04-21 15:04:20

+0

@JustLoren:我可以重做我的顯示機制,只要我仍然有控制圖像和C#代碼的超鏈接。你能給我一個功能替代的例子嗎? – Giffyguy 2010-04-21 15:05:43

+0

看起來像丹的下面:) – JustLoren 2010-04-21 15:31:27

回答

3

首先要做的是確保你的頁面是有效的XHTML。目前有1029 validation errors。如果您的標記無效,那麼您不能指望瀏覽器持續解釋和呈現您的內容。

要注意的一件事是您的網站聲明文檔的文檔類型爲XHTML 1.0 Strict,並且Iframe在此DOCTYPE中無效。你可能想使用XHTML Transitional,它允許它。

另外,你自己的HTML with your add in is also broken.你有錯誤的地方關閉DIV。您的標記如下所示:

<a href="http://www.angryoctopus.net/" target="_top"> 
    <div id="ctl00_cntBody_pnlMain" style="background-color:#D1E231;height:150px;width:150px;padding: 0; margin: 0"> 

    <img src="http://www.angryoctopus.net/Content/Ad/150x150.png" style="border-style:None;border-width:0px;padding: 0; margin: 0" /> 

</div></a> 

您應該將關閉的DIV移動到關閉的A標記之外。

正如我所說,確保您validate your HTML,因爲這些錯誤將突出顯示。有效的標記不僅僅是一個很好的標準,確保您的內容在多個瀏覽器上正確呈現是至關重要的。

+0

不幸的是,我沒有控制客戶端網站。此外,網站上還有大量其他功能性內聯框架。 – Giffyguy 2010-04-21 15:07:46

+0

您自己的HTML代碼也是無效的,並且有錯誤。請參閱我的更新回答。 – 2010-04-21 15:17:47

+0

丹正確的把div取出錨定標記 asp:panel == html div asp:超鏈接== html錨 – house9 2010-04-21 15:20:27