跨页面表单提交问题(本人菜菜)就是想将子页面的表单提交了而已

麻美学姐 发布于 2014/12/12 17:18
阅读 2K+
收藏 0

        artDialog,。新建一个artDialog 之后里边嵌套的是一个html页面,将里面的表单提交了。

        结构是本页A为父页面,打开一个弹窗作为子页面B,iframe装着,里边有个表单‘addform’,js在A页面写,如何获取到B页面的DOM对象?

        类似于window.parent,但是artDialog建的iframe没有class,没有id,没有name。how?

加载中
0
stormAction
stormAction

不纠结的方式就是把提交写在iframe~

一定要在A页面的话,没有id可以通过tagName啊

比如:

window.onload = function(){
    var ifr = document.getElementsByTagName('iframe')[0].contentWindow.document.getElementById('demo').innerHTML;
    console.log(ifr);
}

0
不是simaguo
不是simaguo
哎,我也刚遇到,还在纠结当中,楼主怎么解决的?
0
麻美学姐
麻美学姐

引用来自“simaguo”的评论

哎,我也刚遇到,还在纠结当中,楼主怎么解决的?

我还没有好的解决方法,因为如果用iframe的话其实按了一次按钮弹出弹窗关掉再一次按的话iframe是多一个的,要不就每按一次就增加一,

$('#buttonB').click(
function(){
var dB = top.dialog({title:'buttonB title',
id:'bbt',
height:'340px',
url:'addform.html',
okValue:'OK',
ok:function(){
$("iframe").get(0).contentWindow.document.getElementById('addform').onsubmit();
alert($("iframe").get(0).contentWindow.document.getElementById('addform').submit);
return false;//上面的get(0) 的0 用参数,每点一次加1。如果前后都有按钮的话影响到了就同时

//加1?如果有好的方法求分享一发
}
//cancelValue:'cancel',
//cancel:function(){
//}
});
dB.showModal(document.getElementById("buttonB"));
});

0
不是simaguo
不是simaguo

引用来自“simaguo”的评论

哎,我也刚遇到,还在纠结当中,楼主怎么解决的?

引用来自“小汤哥”的评论

我还没有好的解决方法,因为如果用iframe的话其实按了一次按钮弹出弹窗关掉再一次按的话iframe是多一个的,要不就每按一次就增加一,

$('#buttonB').click(
function(){
var dB = top.dialog({title:'buttonB title',
id:'bbt',
height:'340px',
url:'addform.html',
okValue:'OK',
ok:function(){
$("iframe").get(0).contentWindow.document.getElementById('addform').onsubmit();
alert($("iframe").get(0).contentWindow.document.getElementById('addform').submit);
return false;//上面的get(0) 的0 用参数,每点一次加1。如果前后都有按钮的话影响到了就同时

//加1?如果有好的方法求分享一发
}
//cancelValue:'cancel',
//cancel:function(){
//}
});
dB.showModal(document.getElementById("buttonB"));
});

我把url改成content,然后content的内容用ajax获取。


$('#buttonB').click(
        url='addform.html';
        $.get(url,'',function(html){
            var dB = top.dialog({
            title:'buttonB title',
            id:'bbt',
            height:'340px',
            content:html,
            okValue:'OK',
            ok:function(){
                //do something
                return false;
            },
            cancelValue:'cancel',
            cancel:function(){}
         });
         dB.showModal();
})
不是simaguo
不是simaguo
回复 @小汤哥 : 这个怎么攻击
麻美学姐
麻美学姐
我一开始也是这样做的,我导师说这样不好,我也不知道哪里不好,我就知道那个 html content 好恶心,各种引号。,xss攻击吧,好像说的是。
0
麻美学姐
麻美学姐

引用来自“simaguo”的评论

引用来自“simaguo”的评论

哎,我也刚遇到,还在纠结当中,楼主怎么解决的?

引用来自“小汤哥”的评论

我还没有好的解决方法,因为如果用iframe的话其实按了一次按钮弹出弹窗关掉再一次按的话iframe是多一个的,要不就每按一次就增加一,

$('#buttonB').click(
function(){
var dB = top.dialog({title:'buttonB title',
id:'bbt',
height:'340px',
url:'addform.html',
okValue:'OK',
ok:function(){
$("iframe").get(0).contentWindow.document.getElementById('addform').onsubmit();
alert($("iframe").get(0).contentWindow.document.getElementById('addform').submit);
return false;//上面的get(0) 的0 用参数,每点一次加1。如果前后都有按钮的话影响到了就同时

//加1?如果有好的方法求分享一发
}
//cancelValue:'cancel',
//cancel:function(){
//}
});
dB.showModal(document.getElementById("buttonB"));
});

我把url改成content,然后content的内容用ajax获取。


$('#buttonB').click(
        url='addform.html';
        $.get(url,'',function(html){
            var dB = top.dialog({
            title:'buttonB title',
            id:'bbt',
            height:'340px',
            content:html,
            okValue:'OK',
            ok:function(){
                //do something
                return false;
            },
            cancelValue:'cancel',
            cancel:function(){}
         });
         dB.showModal();
})

小哥,给你看解决方法,很简单的。

function mysubmit(){	
	try {$('#myform').submit();
var dialog = top.dialog.get(window);//获取当前弹出的弹窗
	}
	catch (e) {
		$('body').append(
		'<p><strong>Error:</strong> 跨域无法无法操作 iframe 对象</p>'
		+'<p>chrome 浏览器本地会认为跨域,请使用 http 方式访问当前页面</p>'
		)
	}
	dialog.close(retValue);//关闭,可以回传数据
	dialog.remove(); // 主动销毁对话框
	return false; 
}



然后你可以不使用artDialog自带的按钮,直接在引用的页面里边添加提交按钮,进行这个操作,我当时短路了没用这个,突然想起来了。

返回顶部
顶部