我的问题是,我有一个带有iframe的页面,它通过__doPostBack()调用加载asp表单。然后,当我尝试在"刷新"doPostBack()后用Javascript做一些事情时,不会有任何结果。
当我单击标记时,会在iframe中调用__DoPostBack操作。ej:
<a href="javascript:__doPostBack('ctl00$plhContent$clsOverview$dgClasses$ctl02$cmdAskRegister','')" class="button" id="ctl00_plhContent_clsOverview_dgClasses_ctl02_cmdAskRegister">Inscripción en Curso</a>
我尝试了很多我在互联网上看到的解决方案,但所有这些都是我还没有加载到HTML中的asp。我可以访问iframe上的asp事件吗?
Iframe负载:
<div id="gtregistrations.<%=medEntry.getExternalIdentity()%>.<%=medEntry.getType()%>.<%=sLocale%>">
<script type="text/javascript" src="<%=pref.getGtPath()%>/Liferay/scripts/tls/myregistrations.js"></script>
Javascript:
<script type="text/javascript">
var idConvocatoria = 'hola';
if(typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
return this.replace(/^s+|s+$/g, '');
}
}
$(window).load(function() {
$("#frm_gt_media")
.contents().find("#ctl00_plhContent_clsOverview_dgClasses")
.find("[id$=_cmdAskRegister]").click(function() {
var oldHref = $(this).attr("href");
var idConvocatoria = $(this).parent().parent().siblings(":first").text().trim();
if (confirm("¿Necesita desplazamiento para el curso?")) {
//Logica ejecutar formulario y registrar
AUI().use(
'aui-aria',
'aui-dialog',
'node',
'aui-overlay-manager',
'dd-constrain',
function(A) {
var dialog = new A.Dialog(
{
centered: true,
height: 700,
title: 'Solicitud Desplazamiento',
width: 1024
}
).render();
dialog.plug(
A.Plugin.IO,
{
autoLoad: false,
uri: '<%=solicitudPortlet%>+&idConvocatoria='+ $("#frm_gt_media").contents().find("#ctl00_plhContent_clsOverview_dgClasses").find("[id$=_cmdAskRegister]").parent().parent().siblings(":first").text().trim()
}
);
dialog.io.start();
}
);
} else {
//logica solo registrar y refresh?
}
});
});
</script>
您可以在iframe上分配一个onload事件,但该事件将在ifame加载时触发。不仅仅是在发生回发时。