Почему моя гиперссылка ASP.NET не работает в IE? - PullRequest
1 голос
/ 21 апреля 2010

Я делаю очень простую систему кнопок для рекламы, используя ASP.NET 2.0

Рекламное объявление представляет собой квадрат размером 150x150 пикселей, который отображается на **.
(Прокрутите немного вниз, и вы увидите ярко-зеленый «Злой осьминог» в правой части экрана.)

Теперь я не являюсь администратором **. Вместо этого я являюсь администратором 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 во всех моих тестах . Я не проверял IE7.

Но когда вы просматриваете ** в IE (8), гиперссылка ничего не делает, и курсор не указывает, что гиперссылка есть даже там. Хотя вы можете увидеть целевой URL в строке состояния.

Я учел тот факт, что ** использование XHTML 1.0 Strict может вызывать проблемы, но это, вероятно, повлияет на Firefox и Chrome, верно? (Мои страницы aspx используют XHTML 1.0 Transitional)

Моя единственная другая теория заключается в том, что какой-то случайный класс CSS может применять странный атрибут к моему iframe, но опять-таки я ожидаю, что это повлияет на Firefox и Chrome.

Это проблема безопасности с IE? Кто-нибудь знает, какая часть сайта ** может блокировать гиперссылку в IE? И как я могу обойти это без необходимости что-либо жестко кодировать на сайте **? Есть ли альтернатива iframe, которая бы выполняла ту же работу, не требуя сложных сценариев?

1 Ответ

3 голосов
/ 21 апреля 2010

Первое, что нужно сделать, это убедиться, что ваша страница является верным XHTML. В настоящее время существует 1029 ошибок проверки . Если ваша разметка недействительна, вы не можете ожидать, что браузеры будут последовательно интерпретировать и отображать ваш контент.

Следует обратить внимание на тот факт, что ваш сайт объявляет тип документа XHTML 1.0 Strict , и в этом типе недействительны Iframes. Вы, вероятно, хотите использовать XHTML Transitional, что позволяет.

Кроме того, ваш собственный HTML-код с надстройкой также поврежден. У вас есть закрывающий 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 вне закрывающего тега.

Как я уже сказал, убедитесь, что вы подтвердите свой HTML , так как эти ошибки будут выделены. Правильная разметка - это не просто сложность, она необходима для правильной визуализации контента в нескольких браузерах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...