2 jim80 Jim80 于 2015.07.19 20:16 提问

Js代码顺序问题,JS异常:报缺少对象

大家好,有一个JS问题,代码以上线,突然有一天下午,JS异常:报缺少对象

代码如下:
1,有一个父页面JSP里有Iframe,Iframe里调用另一个公司界面,这个界面有一个提交按钮,点击提交后回调我一个Action的方法
2,这个方法回调中间界面如下:

 <%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE html>
<html>

    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=GBK">
        <title>沃易销系统欢迎您</title>
        <base target="_self">
        <script src="http://112.65.239.123/o2o/jituan/js/jquery-1.7.2.min.js"></script>
    </head>

    <body screen_capture_injected="true">
        <input type="text" id="name" value="${zhiGongUser.cert_name }" />
        <br>
        <input type="text" id="card" value="${zhiGongUser.cert_id }" />
        <br>
        <input type="text" id="cardaddr" value="${zhiGongUser.cert_addr }" />
        <br>
        <input type="text" id="certexpdate" value="${zhiGongUser.cert_exp_date }" />
        <br>
        <input type="text" id="authCode" value="${zhiGongUser.authCode }" />
        <br>
<script type="text/javascript">
    $(function() {
        alert(parent);
        parent.tianchong('${zhiGongUser.cert_name }', '${zhiGongUser.cert_id }', '${zhiGongUser.cert_addr }','${zhiGongUser.cert_exp_date }','${zhiGongUser.authCode }');
    });
</script>
    </body>

</html>

parent.tianchong 这里报缺少对象

10个回答

showbo
showbo   Ds   Rxr 2015.07.19 20:42

父页包含这个方法的脚本你放到页脚了吧。。速度问题导致iframe的dom下载完毕,而父页的js文件还没下载导致找不到函数。。
你将那个js脚本放到父页的head标签里面加载或者放到ifarme之前,不能放之后

danielinbiti
danielinbiti   Ds   Rxr 2015.07.19 20:19

确认几点
1、两个页面的域是否在同一个,如果是跨域,这么是访问不到的
2、如果是同一个域,是否对方页面中有这个方法。

Jim80
Jim80   2015.07.19 20:23

修改完代码后又可以了,但是不知道原因:

<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<%@include file="/common/taglibs.jsp"%>
<!DOCTYPE html>

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=GBK">
    <title>沃易销系统欢迎您</title>
    <base target="_self">
    <script src="http://112.65.239.123/o2o/jituan/js/jquery-1.7.2.min.js"></script>
</head>

<body screen_capture_injected="true" onload="userInfo()">
    <input type="text" id="name" value="${zhiGongUser.cert_name }" />
    <br>
    <input type="text" id="card" value="${zhiGongUser.cert_id }" />
    <br>
    <input type="text" id="cardaddr" value="${zhiGongUser.cert_addr }" />
    <br>
    <input type="text" id="certexpdate" value="${zhiGongUser.cert_exp_date }" />
    <br>
    <input type="text" id="authCode" value="${zhiGongUser.authCode }" />
    <br>
function userInfo(){ parent.tianchong('${zhiGongUser.cert_name }', '${zhiGongUser.cert_id }', '${zhiGongUser.cert_addr }','${zhiGongUser.cert_exp_date }','${zhiGongUser.authCode }'); );
</body>

Jim80
Jim80   2015.07.19 20:25

$(function() {} 改成了onload()方法,

Jim80
Jim80   2015.07.19 20:26

应该是同一个域,能访问,下面回调的是父类的tianchong方法

danielinbiti
danielinbiti 如果是加载触发,确认一下另外页面是否加载完成了。可能你加载完成调用的时候对方页面还没加载完。jquery的ready比onload触发的时间早
2 年多之前 回复
Jim80
Jim80   2015.07.19 20:50

回调方法是放在父页的head里面,如下:
function tianchong(name,card,cardaddr,certexpdate){
$("#userName").val(name);
$("#cardId").val(card);
$("#certAdree").val(cardaddr);
$("#cardtime2").val(certexpdate);
$("#jingBanName").val(name);
$("#contacts").val(name);
$("#contactsname2").val(name);
$("#networkaddr2").val(cardaddr);
$("#contactsAddress").val(cardaddr);
$("#contactsname3").val(name);
$("#networkaddr3").val(cardaddr);
chooseAlertClose();
var oper_code = $('.current').data("val");
if(oper_code=='1'){
$("#kehuInfo1").show();
$("#kehuInfo2").hide();
$("#kehuInfo3").hide();
}else if(oper_code=='2'){
$("#kehuInfo2").show();
$("#kehuInfo3").hide();
$("#kehuInfo1").hide();
}else {
$("#kehuInfo3").show();
$("#kehuInfo2").hide();
$("#kehuInfo1").hide();
}

}


Jim80
Jim80   2015.07.19 20:54

我的Iframe是通过
chooseAlertFn('信息提示','', newBtnObj2);

这个chooseAlertFn函数是引用

Jim80
Jim80   2015.07.19 20:55

strutce
strutce   Ds   Rxr 2015.07.19 21:49

$(function() {
alert(parent);
parent.tianchong('${zhiGongUser.cert_name }', '${zhiGongUser.cert_id }', '${zhiGongUser.cert_addr }','${zhiGongUser.cert_exp_date }','${zhiGongUser.authCode }');
}); 这样写只在加载页面的时候执行以下,你点击什么的时候是不会再执行的

CSDNXIAON
CSDNXIAON   2015.07.20 13:20

js对象问题
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片