2010-04-21 12 views
1

나는 ASP.NET 2.0을 사용하여 매우 간단한 광고 버튼 시스템을 만들고 있습니다.내 ASP.NET 하이퍼 링크가 IE에서 작동하지 않는 이유는 무엇입니까?

** 광고는 **에 표시되는 150x150 픽셀 정사각형입니다.
(조금 아래로 스크롤하면 화면 오른쪽에 밝은 녹색의 "Angry Octopus"가 표시됩니다.)

이제 **의 관리자가 아닙니다. 대신 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)에서 **를 볼 때 하이퍼 링크는 아무 것도하지 않으며 커서가 하이퍼 링크가 있다고 표시하지 않습니다. 상태 표시 줄에서 대상 URL을 볼 수 있습니다.

** 나는 XHTML 1.0 Strict를 사용하여 문제가 발생할 수 있다고 생각했지만 실제로는 Firefox와 Chrome에 영향을 미칩니 까? (내 aspx 페이지는 XHTML 1.0 Transitional을 사용합니다.)

다른 이론은 임의의 CSS 클래스가 내 iframe에 이상한 속성을 적용 할 수 있지만 다시 Firefox와 Chrome에 영향을 미칠 것이라고 생각합니다.

IE의 보안 문제입니까? 누구든지 IE의 하이퍼 링크를 차단할 수있는 ** 웹 사이트의 부분을 알고 있습니까? 그리고 ** ** ** ** ** ** ** 웹 사이트에 어떤 것도 하드 코딩하지 않고이 문제를 해결할 수 있습니까? 복잡한 스크립트를 필요로하지 않고 동일한 작업을 수행 할 수있는 iframe에 대한 대안이 있습니까?

+0

이상하게도 마우스 오른쪽 버튼을 클릭하여 링크를 열어도 괜찮습니다. 디스플레이 메커니즘을 다시 시도 할 수 있습니까? 즉, 가지고있는 서버 컨트롤의 특정 조합을 가질 필요가 없습니다. – JustLoren

+0

@ JustLoren : C# 코드에서 이미지와 하이퍼 링크를 여전히 제어 할 수 있다면 디스플레이 메커니즘을 다시 할 수 있습니다. 기능적 대안의 예를 들어 줄 수 있습니까? – Giffyguy

+0

Dan 님이 아래처럼 보입니다 :) – JustLoren

답변

3

먼저해야 할 일은 유효한 XHTML 페이지인지 확인하는 것입니다. 현재 1029 validation errors이 있습니다. 마크 업이 유효하지 않은 경우 브라우저가 일관되게 콘텐츠를 해석하고 렌더링한다고 기대할 수 없습니다.

중요한 것은 귀하의 사이트가 doctype을 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을 확인하십시오. 오류가 강조 표시 될 것이므로 유효한 마크 업 (mark-up)은 단순한 것이 아니며 여러 브라우저에서 올바르게 렌더링되도록하는 것이 중요합니다.

+0

불행히도, 나는 클라이언트 사이트에 대한 통제권이 없습니다. 또한 사이트에는 다른 iframe이 그대로 있습니다. – Giffyguy

+0

자신의 HTML 코드도 유효하지 않으며에 오류가 있습니다. 업데이트 된 답변을 참조하십시오. –

+0

Dan은 앵커 태그를 div에서 바로 가져옵니다. asp : panel == html div asp : 하이퍼 링크 == html 앵커 – house9

관련 문제