سؤال

أحاول ضبط HTML من iFrame في وقت التشغيل، من التعليمات البرمجية خلفها.

في صفحة ASPX الخاصة بي لدي:

<asp:Button ID="btnChange" runat="server" Text="Change iframe content" 
onclick="btnChange_Click" />

<br />

<iframe id="myIframe" runat="server" />

في الرمز وراء:

protected void btnChange_Click(object sender, EventArgs e)
{
    myIframe.InnerHtml = "<h1>Contents Changed</h1>";
}

عندما أقوم بتشغيل هذا .... وظائف مرة أخرى، ولكن لا يغير محتويات myiframe على الإطلاق ... ماذا أفعل الخطأ؟


أحتاج إلى القيام بذلك لأن IM ينفذ 3D آمن في عملية الخروج الخاصة بي .. أساسا:

1) يدخل العميل يدخل تفاصيل بطاقة الائتمان 2) يتم تقديم نموذج، والشيكات مع بوابة الدفع إذا كان 3D Secure مطلوبا. إذا كان الأمر كذلك، يتم إنشاء عنوان URL للموقع الآمن للبنوك لإدخال المعلومات 3) أقوم بإنشاء طلب نشر لهذا عنوان URL هذا، والذي يحتوي على رمز أمان طويل، وعدد قليل من المعلومات. أحصل على عقد HTML عاد من طلب المشاركة هذا، وتحتاج إلى عرضه في iFrame.

هيريس ما تقول الوثائق القيام به:

<html>
<head>
<title>Please Authenticate</title>
</head>
<body onload="OnLoadEvent();">
<form name="downloadForm" action="https://mybank.com/vbyv/verify" method="POST">
<input type="hidden" name="PaReq" value="AAABBBBCCCCHHHHHH=">
<input type="hidden" name="TermUrl" value="https:// www. MyWidgits.Com/next.cgi">
<input type="hidden" name="MD" value="200304012012a">
</form>

<script language="Javascript"> <!-- function OnLoadEvent(){ document.downloadForm.target = "ACSframe"; document.downloadForm.submit(); } //--> </script>

<!-- MERCHANT TO FILL IN THEIR OWN BRANDING HERE -->
<iframe src="blank.htm" name="ACSframe" width="390" height="450" frameborder="0">
</iframe>
<!-- MERCHANT TO FILL IN THEIR OWN BRANDING HERE -->
</body>
</html>
هل كانت مفيدة؟

المحلول

يمكنك تجربة هذا:

protected void btnChange_Click(object sender, EventArgs e)
{
   myIframe.Attributes["src"] = "pathtofilewith.html"
}

أو ربما هذا سيعمل أيضا:

protected void btnChange_Click(object sender, EventArgs e)
{
   myIframe.Attributes["innerHTML"] = "htmlgoeshere"
}

نصائح أخرى

لا توجد سمة innerhtml ل iFrame. ومع ذلك، منذ HTML 5.0، هناك جديد srcdoc. ينسب. http://www.w3schools.com/tags/tag_iframe.asp.

قيمة: html_code.

الوصف: يحدد محتوى HTML للصفحة لإظهارها في <iframe>

الذي يمكنك استخدامه مثل هذا:

protected void btnChange_Click(object sender, EventArgs e)
{
    myIframe.Attributes["srcdoc"] = "<h1>Contents Changed</h1>";
}

لا يمكنك تغيير خاصية iFrame Innerhtml. ليس لديها خاصية innerhtml على الإطلاق. حاول التسجيل Startupscript واستخدام المستند. كتابة لتغيير محتوى iFrame لأنه نافذة.

بالمناسبة، أعتقد أن علامة HTML هي مكان أفضل لهذا.

<asp:Button ID="btnChange" runat="server" Text="Change iframe content" onclick="btnChange_Click" />
<br />
<asp:Literal id="myIframe" runat="server" />

in the code behind:

protected void btnChange_Click(object sender, EventArgs e){
    myIframe.Text = "<h1>Contents Changed</h1>";
}

ما عليك القيام به هو إنشاء صفحة منفصلة ASPX فارغة والتي تحصل على الاستجابة وتحميلها في جسمها، وبعبارة أخرى تحل محل نفسها، مثل

mypage.aspx:

<%@ Page contentType="text/html" %>
//... using your namespace that contains the required functionality
<% Response.Write(MyObject.CreateBody()) %>

ثم ضع هذه الصفحة داخل iTrame ...

<iframe src="mypage.aspx" ... />

ببساطة، IFRAME هي نافذة جانبية عميل، لا يمكنك الرجوع إلى جسمها ككائن من جانب الخادم، لم يتم تحميله بعد!

أو ... يمكنك فتح ملف HTML، تفريغ الاستجابة ثم احفظ وإغلاق ... تمت الإشارة إلى هذا الملف الخاص بك دائما. استخدام كائنات دفق النص، أو filesystemobject أو مثل ...

ملاحظة. أنا لم أحاول أي منه

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top