2010-01-05 4 views
0

J'utilise un littéral sur ma page qui a une forme html en elle. ce littéral est affiché quand un lien spécifique est cliqué, un div de superposition est montré sur la page et il montre le formulaire sur le div de superposition. Tous les navigateurs fonctionnent correctement et exactement comme prévu, mais IE n'affiche rien sur la div overlay, c'est-à-dire que la div superposée apparaît mais est vide. J'ai essayé d'ajouter des balises au contrôle littéral une par une pour voir quelle balise cause exactement le problème et j'ai constaté que tout le contenu (contrôles d'entrée HTML, etc.) était affiché sur la div overlay jusqu'à ce que la balise <form> soit ajoutée au littéral texte.
Si la propriété literal.Text n'a pas de balise <form>, le contenu s'affiche également dans IE. Mais le problème est que je dois avoir ce <form> à l'intérieur du littéral car je dois poster les données à un lien externe. Lorsque tous les autres navigateurs fonctionnent correctement, quel pourrait être le problème dans IE?IE ne montrant pas <form> tag dans le texte littéral

suivant est le contenu littéral lorsque son ensemble:

formSalesForce.Text = "<div style='clear:both'></div><h2 class='sIFR-replaced1' style='text-align:left'><embed height='20' id='h2heading' width='282' src='frutiger_light.swf' quality='best' flashvars='txt=Document Description&amp;textalign=left&amp;offsetTop=0&amp;textcolor=#878787&amp;hovercolor=#76b404&amp;linkcolor=#87be22&amp;w=282&amp;h=20' wmode='transparent' bgcolor='transparent' sifr='true' type='application/x-shockwave-flash' class='sIFR-flash1' style='width: 282px; height: 20px;'/><span class='sIFR-alternate'>Document Description</span></h2>" + d.DocDescription + "<BR><p>Please fill out the following information so that we can proceed with providing you the link to the document</p><form id='myDocForm' name='myDocForm' action='" + d.DataSubmissionPath + "' method='POST' ><table class='clearBoth' width='45%'><tr><td><input type=hidden name='oid' value='" + d.OID + "'></td><td><input type=hidden name='retURL' value='" + "" + "'></td></tr><tr><td class='formlabel' >First Name*</td><td class='formfield'><input type='text' id='first_name' size='20' maxlength='40' name='first_name'></td></tr><tr><td class='formlabel'>Last Name*</td><td class='formfield'><input type='text' id='last_name' size='20' maxlength='40' name='last_name'></td></tr><tr><td class='formlabel'>Email*</td><td class='formfield'><input type='text' id='email' size='20' maxlength='40' name='email'></td></tr><tr><td class='formlabel'>Work Title</td><td class='formfield'><input type='text' id='work_title' size='20' maxlength='40' name='work_title'></td></tr><tr><td class='formlabel'>Company</td><td class='formfield'><input type='text' id='company' size='20' maxlength='40' name='company'></td></tr><tr><td class='formbuttons'><input type='Button' name='btnsubmit' value='Submit' onclick='showDocPanel();'></td></tr></table></form>" 
+0

Pouvez-vous s'il vous plaît fournir le contenu du contrôle littéral s'il vous plaît? – Himadri

+0

Lorsque vous affichez la source, voyez-vous l'élément '

'? Pas que vous ayez deux formulaires (un de asp.net), donc ils ne se comporteraient pas comme prévu. Avez-vous essayé un iframe à l'ancienne? – Kobi

+0

Désolé stackoverflow.com ne s'ouvrait pas à ma fin, donc je ne pouvais pas répondre à vos messages plus tôt. @Kobi: Je ne vois pas la forme quand je vois la source de la page, et je sais que j'ai deux formes, l'une est aspnet et l'autre est basé sur html normal ... mais la chose est que je l'ai fonctionné dans d'autres navigateurs mais pas IE – ria

Répondre

1

je devais faire la solution suivante:

je Request.Browser.Browser pour vérifier si le navigateur était IE ... et puis j'ai modifié le texte littéral pour être le suivant:

Dim s As New StringBuilder 
    s.Append("<iframe name='myIframe' style='visibility:hidden;height:0;width:0;'></iframe><div style='clear:both'></div><h2 class='sIFR-replaced1' style='text-align:left'><embed height='20' id='h2heading' width='282' src='swf/frutiger_light.swf' quality='best' flashvars='txt=Document Description&amp;textalign=left&amp;offsetTop=0&amp;textcolor=#878787&amp;hovercolor=#76b404&amp;linkcolor=#87be22&amp;w=282&amp;h=20' wmode='transparent' bgcolor='transparent' sifr='true' type='application/x-shockwave-flash' class='sIFR-flash1' style='width: 282px; height: 20px;'/><span class='sIFR-alternate'>Document Description</span></h2><p align='left'><i>" + d.DocDescription + "</i><BR><BR></p>") 
    s.Append("<p>Please fill out the following information so that we can proceed with providing you the link to the document</p>") 
    If (Not Request.Browser.Browser.Equals("IE")) Then 
     s.Append("<form id='myDocForm' name='myDocForm' target='myIframe' action='" + d.DataSubmissionPath + "' method='POST' >") 
    End If 

    s.Append("<table class='clearBoth' width='45%'><tr><td>") 
    s.Append("<input type=hidden name='oid' id='oid' value='" + d.OID + "'></td><td>") 
    s.Append("<input type=hidden name='retURL' id='retURL' value='" + "" + "'></td></tr>") 

    ' debug(info) 
    s.Append("<input type='hidden' name='debug' value=1>") 
    s.Append("<input type='hidden' name='debugEmail'") 
    s.Append("value=''>") 

    s.Append("<tr><td class='formlabel'>First Name*</td>") 
    s.Append("<td class='formfield'><input type='text' id='first_name' size='20' maxlength='40' name='first_name'>") 
    s.Append("</td></tr>") 
    s.Append("<tr><td class='formlabel'>Last Name*</td>") 
    s.Append("<td class='formfield'><input type='text' id='last_name' size='20' maxlength='40' name='last_name'>") 
    s.Append("</td></tr>") 
    s.Append("<tr><td class='formlabel'>Email*</td>") 
    s.Append("<td class='formfield'><input type='text' id='email' size='20' maxlength='40' name='email'>") 
    s.Append("</td></tr>") 
    s.Append("<tr><td class='formlabel'>Work Title</td>") 
    s.Append("<td class='formfield'><input type='text' id='work_title' size='20' maxlength='40' name='work_title'>") 
    s.Append("</td></tr>") 
    s.Append("<tr><td class='formlabel'>Company</td>") 
    s.Append("<td class='formfield'><input type='text' id='company' size='20' maxlength='40' name='company'>") 
    s.Append("</td></tr>") 
    s.Append("<tr><td>&nbsp;</td>&nbsp;<td></td></tr>")  'empty row for spacer cells 
    s.Append("<tr><td>&nbsp;</td><td class='formbuttons' align='right'><input type='Button' id='btnsubmit' name='btnsubmit' value='Submit' onclick='showDocPanel();'>") 
    s.Append("</td></tr>") 
    s.Append("</table>") 
    If (Not Request.Browser.Browser.Equals("IE")) Then 
     s.Append("</form>") 
    End If 
formSalesForce.Text=s.ToString() 

Ainsi, le navigateur IE a montré la table car il n'y avait pas de balise attachée au littéral lorsque IE était utilisé.

Maintenant; lors de l'utilisation de IE, j'ai eu un souci de poster le formulaire sur le site externe, puisqu'il n'y avait pas de formulaire, il ne pouvait pas être soumis ... donc je devais utiliser un formulaire en double créé par javascript:

Utilisé ce segment javascript tirée de ce site: http://en.allexperts.com/q/Javascript-1520/create-form-submit-fly.htm

function getNewSubmitForm(){ 
var submitForm = document.createElement("FORM"); 
document.body.appendChild(submitForm); 
submitForm.method = "POST"; 
return submitForm; 
} 

//helper function to add elements to the form 
function createNewFormElement(inputForm, elementName, elementValue){ 
var newElement = document.createElement("<input name='"+elementName+"' id='" + elementName + "' type='hidden'>"); 
inputForm.appendChild(newElement); 
newElement.value = elementValue; 
return newElement; 
} 

//function that creates the form, adds some elements 
//and then submits it 
function createFormAndSubmit(){ 
var submitForm = getNewSubmitForm(); 
//alert("form created"); 
createNewFormElement(submitForm, "oid", document.getElementById("oid").value); 
createNewFormElement(submitForm, "debug", "1"); 
createNewFormElement(submitForm, "debugEmail", ""); 
createNewFormElement(submitForm, "first_name", document.getElementById("first_name").value); 
createNewFormElement(submitForm, "last_name", document.getElementById("last_name").value); 
createNewFormElement(submitForm, "email", document.getElementById("email").value); 
createNewFormElement(submitForm, "work_title", document.getElementById("work_title").value); 
createNewFormElement(submitForm, "company", document.getElementById("company").value); 
createNewFormElement(submitForm, "retURL", window.location.href); 
//alert(window.location.href + "::elements added"); 
submitForm.action= "my external website url"; 
submitForm.target='myIframe'; 
//alert("submitting"); 
submitForm.submit(); 
} 

maintenant, il y avait un survenant postback lorsque le formulaire soumis à l'URL externe, de travailler que dans je l'ai fait:

  • a créé un iframe caché et ajouté à la texte littéral (voir le code ci-dessus pour le texte littéral)
  • a fixé l'objectif de formulaire pour être le nom de ce cadre (voir le code ci-dessus pour le texte littéral)
  • définir la cible du javascript dupliqué formulaire pour être le nom de ce cadre (voir ci-dessus le code javascript)
0

Réglage marge de forme à zéro devrait également fonctionner:

.formStyle { margin: 0px; }

Questions connexes