2010-04-21 9 views
1

Je crée un système de bouton de publicité très simple utilisant ASP.NET 2.0Pourquoi mon lien hypertexte ASP.NET ne fonctionnera-t-il pas dans IE?

La publicité est un carré de 150x150px qui est affiché sur **.
(Faites défiler vers le bas un peu et vous verrez le vert "Angry Octopus" sur le côté droit de l'écran.)

Maintenant, je ne suis pas l'administrateur de **. Au lieu de cela, je suis l'administrateur de angryoctopus.net
Par conséquent, je n'ai pas la possibilité de modifier le code d'affichage de l'annonce sur un coup de tête. J'ai donc donné ** ce bout de code pour afficher notre annonce bien, tout en me permettant de personnaliser le code back-end de mon côté des choses:

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

Vous trouverez cet extrait dans la source de page **

de mon côté, le code ressemble à ceci:

<%--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> 

... et il y a un certain arrière-plan du code C# insignifiant pour délit de comptage.

D'après ce que je peux dire, cela semble très bien du point de vue du code. Tout fonctionne dans Firefox et Chrome. En outre, tout semble fonctionner dans IE8 in all of my tests. Je n'ai pas testé IE7. Mais lorsque vous affichez ** dans IE (8) le lien hypertexte ne fait rien, et le curseur n'indique pas que le lien hypertexte est encore là. Bien que vous puissiez voir l'URL cible dans la barre d'état.

J'ai considéré le fait que ** utilise XHTML 1.0 Strict pourrait causer des problèmes, mais cela affecterait probablement Firefox et Chrome non? (Mes pages aspx utilisent XHTML 1.0 Transitional)

Ma seule autre théorie est qu'une classe CSS aléatoire pourrait appliquer un attribut bizarre à mon iframe, mais encore une fois je pense que cela affecterait Firefox et Chrome.

Est-ce un problème de sécurité avec IE? Est-ce que quelqu'un sait quelle partie du site Web de ** pourrait bloquer l'hyperlien dans IE? Et comment puis-je contourner cela sans avoir à coder dur sur le site Web de **? Existe-t-il une alternative à iframe qui ferait le même travail sans nécessiter de script compliqué?

+0

Etrangement, vous pouvez cliquer droit et choisir d'ouvrir le lien, et cela fonctionne très bien. La refonte de votre mécanisme d'affichage est-elle acceptable? À savoir, il n'y a pas besoin d'avoir la combinaison particulière de contrôles serveur que vous avez. – JustLoren

+0

@JustLoren: Je suis d'accord pour refaire mon mécanisme d'affichage, tant que j'ai toujours le contrôle de l'image et le lien hypertexte du code C#. Pouvez-vous me donner un exemple d'alternative fonctionnelle? – Giffyguy

+0

On dirait que Dan l'a eu en bas :) – JustLoren

Répondre

3

La première chose à faire serait de s'assurer que votre page est XHTML valide. Il y a actuellement 1029 validation errors. Si votre balisage n'est pas valide, vous ne pouvez pas vous attendre à ce que les navigateurs interprètent et affichent votre contenu de manière cohérente.

Une chose importante à regarder est le fait que votre site déclare un doctype de XHTML 1.0 Strict et que les Iframes ne sont pas valides dans ce doctype. Vous voulez probablement utiliser XHTML Transitional, ce qui le permet.

Aussi, votre propre HTML with your add in is also broken. Vous avez un DIV de fermeture au mauvais endroit. Votre majoration ressemble à ceci:

<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> 

Vous devez déplacer le DIV de fermeture en dehors de l'étiquette A de fermeture.

Comme je l'ai dit, assurez-vous validate your HTML puisque ces erreurs seront mises en évidence. Un balisage valide n'est pas seulement un détail, il est essentiel de s'assurer que votre contenu s'affiche correctement sur plusieurs navigateurs.

+0

Malheureusement, je n'ai pas le contrôle du site client. De plus, il y a beaucoup d'autres iframes fonctionnels sur le site tel qu'il est. – Giffyguy

+0

Votre propre code HTML est également invalide et contient des erreurs. Voir ma réponse mise à jour. –

+0

Dan est à droite prendre le div hors de l'étiquette d'ancrage asp: panneau == html div asp: lien hypertexte == ancre html – house9

Questions connexes