问题如下
    我做的是弹出框架效果,我想在在弹出的框架中使用引入JS文件
    document.write()输入了JS文件(该JS文件是个时间控件,<script><\/script>这个我注意了),而且这个JS文件是个面向对象,因此要初始化对象才能使用的
    开始的时候我用document.write()写初始化,但是运行后会提示我没有对象:
    var oCalendarEn = new PopupCalendar('oCalendarEn');oCalendarEn.Init();
    说oCalendarEn没有这个对象。    后来我把初始化移入了下面BUTTON 的onclick事件
    onClick=\"javascript:var oCalendarEn = new PopupCalendar('oCalendarEn');oCalendarEn.Init();getDateString(this,oCalendarEn);\" 
    运行后,没有刚才找不到对象的问题了,但是出现更加恶心的  没有权限
     
    求好心的高手能帮帮我
     

解决方案 »

  1.   

    js里有PopupCalendar否??不知道
      

  2.   

    没有权限?
    是不是js所在的文件夹asp.net帐户没有访问的权限?
      

  3.   

    建议动态调用js时,
    根据传入js的参数来执行不同的效果
      

  4.   

    首先这是上面一个FUNCTION  是编辑框架的使框架调入function checkIMBObject(){
                    if(window.parent.parent.imb_FormModal.document.getElementById("imb_Content")==null)
                    {
                    window.parent.parent.imb_FormModal.document.open();
                    window.parent.parent.imb_FormModal.document.write("<html><head><script language=\"javascript\" src=\"JavaScriptClass/Date.js\"><\/scr"+"ipt><style><!--");
                    window.parent.parent.imb_FormModal.document.write("td{font-size:12px;");
                    window.parent.parent.imb_FormModal.document.write("//--></style></head><body scroll=no leftmargin=0 topmargin=0>");
                    window.parent.parent.imb_FormModal.document.write("<table width=100% height=100% ><tr><td  align=left style=\"height: 15px\" background=\"Image/ToolbarBG.gif\"><div id=\"imb_Title\"  style=\"padding-left:3px;padding-right:3px;color:black;font-family:verdana;font-size:16px;\">");
                    window.parent.parent.imb_FormModal.document.write("</div></td></tr><tr><td align=left><div id=\"imb_Content\" style=\"padding:7px;\">");
                    window.parent.parent.imb_FormModal.document.write("</div></td></tr><tr><td id=\"imb_Body\" align=center>");
                    window.parent.parent.imb_FormModal.document.write("</td></tr></table>");
                    window.parent.parent.imb_FormModal.document.write("</body></html>");
                    window.parent.parent.imb_FormModal.document.close();
                    }
            }
    下面是按钮的功能调用var iContent = "</br><input type=text id=\"txt_ResidenceHistory\" name=\"txt_ResidenceHistory\" /></br>"+"Until the DateTime</br>"+"<input type=text id=\"txt_Datetime\" name=\"txt_Datetime\" readOnly onClick=\"javascript:var oCalendarEn = new PopupCalendar('oCalendarEn');oCalendarEn.Init();getDateString(this,oCalendarEn);\"  />";//getDateString(this,oCalendarEn)
            var Br = new innerMessageBox();
            Br.ShowModal("Residence History", "Enter your residence history", 320, 200,iContent,2);
      

  5.   

    var iContent = "</br><input type=text id=\"txt_ResidenceHistory\" name=\"txt_ResidenceHistory\" /></br>"
    +"Until the DateTime</br>"+"<input type=text id=\"txt_Datetime\" name=\"txt_Datetime\" readOnly "
    +"onClick=\"javascript:var oCalendarEn = new PopupCalendar('oCalendarEn');oCalendarEn.Init();getDateString(this,oCalendarEn);\"  />";//getDateString(this,oCalendarEn)var Br = new innerMessageBox();
    Br.ShowModal("Residence History", "Enter your residence history", 320, 200,iContent,2);你上面的调用代码写进了iframe imb_FormModal中没有??你导入的script是在imb_FormModal中的,如果iContent没有写如imb_FormModal中,当然会出错
      

  6.   

    内容太多,我分3个帖子写
    我把所有的代码都发上来,就是有点长,(源代码是个仿WINDOWS关机效果)我注释下:
    由于我一个页面用了3层框架,所以我先在顶层写了2个隐藏的框架:<iframe id="imb_Background" src="about:blank" style="position:absolute;left:0;top:0;width:0px;height:0px;visibility:hidden;" frameborder="0"></iframe><iframe id="imb_FormModal" src="about:blank" style="position:absolute;left:0;top:0;width:0px;height:0px;visibility:hidden;border-bottom:2px solid #999999;border-right:2px solid #999999;border-top:1px solid #F8F6C1;border-left:1px solid #F8F6C1;" frameborder="0"></iframe>
      

  7.   

    之后,我开始写了动态调用2个框架的FUNCTION
    function innerMessageBox()
        {
            var BackObject, FormObject;        //    检查页面中是否存在该控件.
            function checkIMBObject(){
                    if(window.parent.parent.imb_FormModal.document.getElementById("imb_Title")==null)
                    {
                    window.parent.parent.imb_FormModal.document.open();
                    window.parent.parent.imb_FormModal.document.write("<html><head><script language=\"javascript\" src=\"JavaScriptClass/Date.js\"><\/scr"+"ipt><style><!--");
                    window.parent.parent.imb_FormModal.document.write("td{font-size:12px;");
                    window.parent.parent.imb_FormModal.document.write("//--></style></head><body scroll=no leftmargin=0 topmargin=0>");
                    window.parent.parent.imb_FormModal.document.write("<table width=100% height=100% ><tr><td  align=left style=\"height: 15px\" background=\"Image/ToolbarBG.gif\"><div id=\"imb_Title\"  style=\"padding-left:3px;padding-right:3px;color:black;font-family:verdana;font-size:16px;\">");
                    window.parent.parent.imb_FormModal.document.write("</div></td></tr><tr><td align=left><div id=\"imb_Content\" style=\"padding:7px;\">");
                    window.parent.parent.imb_FormModal.document.write("</div></td></tr><tr><td id=\"imb_Body\" align=center>");
                    window.parent.parent.imb_FormModal.document.write("</td></tr></table>");
                    window.parent.parent.imb_FormModal.document.write("</body></html>");
                    window.parent.parent.imb_FormModal.document.close();
                    }
            }        //    显示对话框控件.
            this.ShowModal = function(iCaption, iMessage, iWidth, iHeight,iContent,iFunction){
                var smWidth = 420, smHeight = 180, smCaption = "默认对话框", smMessage="您确定执行这项操作吗?",smContent,smFunction,smObject, smAlpha, smInterval;
               
                    smWidth = iWidth;
                    smHeight = iHeight;
                    smCaption = iCaption;
                    smMessage = iMessage;
                    smContent = iContent;
                    smFunction = iFunction;
                    
                    
                //    背景的渐显.
                function checkIMBAlpha(){
                    smObject.style.filter = "alpha(opacity="+smAlpha+");";
                    smAlpha += 10;
                    if (smAlpha>70){
                        clearInterval(smInterval);
                    }
                }
                checkIMBObject();
                this.BackObject = window.parent.parent.document.getElementById("imb_Background");
                this.FormObject = window.parent.parent.document.getElementById("imb_FormModal");
                smObject = this.BackObject;
                smAlpha = 0;
                this.BackObject.style.left = 0;
                this.BackObject.style.top = 0;
                this.BackObject.style.width = window.parent.parent.document.body.scrollWidth+window.parent.parent.document.body.scrollWidth;
                this.BackObject.style.height = window.parent.parent.document.body.scrollHeight;
                //this.BackObject.style.background-color = red;
                this.BackObject.style.visibility = "visible";
                smInterval = window.setInterval(checkIMBAlpha, 50);
                
                this.FormObject.style.left = window.parent.parent.document.body.clientWidth/2 - smWidth/2;
                this.FormObject.style.top = window.parent.parent.document.body.clientHeight/2 - smHeight/2;
                this.FormObject.style.width = smWidth;
                this.FormObject.style.height = smHeight; 
                this.FormObject.style.visibility = "visible";
                window.parent.parent.imb_FormModal.document.getElementById("imb_Title").innerHTML = "<b>" + smCaption + "</b>";
                window.parent.parent.imb_FormModal.document.getElementById("imb_Content").innerHTML = smMessage+smContent;
                window.parent.parent.imb_FormModal.document.getElementById("imb_Body").innerHTML = "<input type=hidden id=imb_Other name=imb_Other shortKey=\"O\">   <input type=submit id=imb_Ok name=imb_Ok value=\"Submit\" >   <input type=button id=imb_Cancel name=imb_Cancel value=\"Cancel\" shortKey=\"C\">";
                
               window.parent.parent.imb_FormModal.document.getElementById("imb_Ok").onclick= function()
               {
                    switch(smFunction)
                    {
                        case 1:
                        
                   
                    var value;
                    value = window.parent.parent.frames["imb_FormModal"].document.getElementById("txt_ProjectInvolved").value;
                    if(value == "")
                    {
                       alert("Please input your content");
                    }
                    else
                    {
                      setCookie("ProjectContent",value);
                      document.getElementById("btn_RAddProject").click();
                    }                              
                    window.parent.parent.document.getElementById("imb_Background").style.visibility = "hidden";
                    window.parent.parent.document.getElementById("imb_FormModal").style.visibility = "hidden";
                    
                    break;
                       case 2:
                    var value;
                    value = window.parent.parent.frames["imb_FormModal"].document.getElementById("txt_ResidenceHistory").value;
                    if(value == "")
                    {
                      alert("Please input your content")
                    }
                    else
                    {
                    setCookie("ResidenceHistory",value);
                    document.getElementById("btn_RAddHistory").click();
                    window.parent.parent.document.getElementById("imb_Background").style.visibility = "hidden";
                    window.parent.parent.document.getElementById("imb_FormModal").style.visibility = "hidden";
                    }
                        break;
                       case 3:
                    var value1,value2;
                    value1 = window.parent.parent.frames["imb_FormModal"].document.getElementById("txt_Relative").value;
                    value2 = window.parent.parent.frames["imb_FormModal"].document.getElementById("txt_Family").value;
                    if(value1 == "")
                    {
                       alert("Relation can't be empty");
                    }
                    else
                    {
                       if(value2 == "")
                       {
                          alert("Introduction can't be empty")
                          
                       }
                       else
                       {
                          setCookie("Relative",value1);
                          setCookie("FamilyInfo",value2);
                          document.getElementById("btn_RAddFamily").click();
                          window.parent.parent.document.getElementById("imb_Background").style.visibility = "hidden";
                          window.parent.parent.document.getElementById("imb_FormModal").style.visibility = "hidden";
                       }
                    }
                             
                        break;
                      case 4:
                      
                      break
                       default:
                       break;
                    }
               }
                window.parent.parent.imb_FormModal.document.getElementById("imb_Cancel").onclick= function()
                {
                    
                     window.parent.parent.document.getElementById("imb_Background").style.visibility = "hidden";
                     window.parent.parent.document.getElementById("imb_FormModal").style.visibility = "hidden";
                    
                }
                
                
            }
        }
      

  8.   


    最后调用这个FUNCTION function showResidenceHistory()
        {   
                
            var iContent = "</br><input type=text id=\"txt_ResidenceHistory\" name=\"txt_ResidenceHistory\" style=\"width: 100%\"/></br>"+"Until the DateTime</br>"+"<input type=text id=\"txt_Datetime\" name=\"txt_Datetime\" readOnly onClick=\"javascript:var oCalendarEn = new PopupCalendar('oCalendarEn');oCalendarEn.Init();getDateString(this,oCalendarEn);\"  />";//getDateString(this,oCalendarEn)
            var Br = new innerMessageBox();
            Br.ShowModal("Residence History", "Enter your residence history", 320, 200,iContent,2);
        }
    所有代码都发上来了最终错误是:
    Microsoft JScript 运行时错误:没有权限
    注释:该效果没有问题,只是动态引入JS文件后(我JS文件是面向对象的),实例化后就会出现没权限调用
      

  9.   

    经过测试我这里没有错误,date.js我只是根据你给的代码简单写了个结构
    date.js,要注意你的js 路径对了没有!!!!!!!!!!!!
    function PopupCalendar(Id)
    {
       alert('new PopupCalendar()');
       this.Init=function()
       {
         alert('PopupCalendar.Init()');
       }
    }
    function getDateString(btn,Calendar)
    {
       alert('getDateString()');
    }<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <meta http-equiv='content-type' content='text/html;charset=gb2312' />
        <title>无标题页</title>
    </head>
    <body>
    <iframe id="imb_Background" src="about:blank" 
       style="position:absolute;left:0;top:0;width:0px;height:0px;visibility:hidden;" frameborder="0"></iframe><iframe id="imb_FormModal" src="about:blank"
        style="position:absolute;left:0px;top:0px;width:0px;height:0px;visibility:hidden;border-bottom:2px solid #999999;
        border-right:2px solid #999999;border-top:1px solid #F8F6C1;border-left:1px solid #F8F6C1;" frameborder="0"></iframe>
    <input type="button" onclick="showResidenceHistory()" value="showResidenceHistory" />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />
    <br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br />1
    </body>
    </html>
      

  10.   

    /*
    你对js的对象引用关系没搞清楚??????怎么使用了window.parent.parent.这个关系????
    */
    function innerMessageBox()
        {
            var BackObject, FormObject,IsIE=document.all;
            //检查页面中是否存在该控件
            function checkIMBObject()
            {       
               var imb_FormModal=IsIE?frames["imb_FormModal"]:document.getElementById("imb_FormModal").contentWindow;    
               if(imb_FormModal.document.getElementById("imb_Title")==null)
                {
                    imb_FormModal.document.open();
                    //===========================
                    //================检查你的date.js路径是否正确===========
    //===========================
                    imb_FormModal.document.write("<html><head><script language=\"javascript\" src=\"Date.js\"></"+"script>");
                    imb_FormModal.document.write("<style><!--td{font-size:12px;");
                    imb_FormModal.document.write("//--></style></head><body scroll=no leftmargin=0 topmargin=0>");
                    imb_FormModal.document.write("<table width=100% height=100% ><tr><td align=left style=\"height:"
                     +" 15px\" background=\"Image/ToolbarBG.gif\"><div id=\"imb_Title\"  style=\"padding-left:3px;padding-right:3px;"
                     +"color:black;font-family:verdana;font-size:16px;\">");
                    imb_FormModal.document.write("</div></td></tr><tr><td align=left><div id=\"imb_Content\" style=\"padding:7px;\">");
                    imb_FormModal.document.write("</div></td></tr><tr><td id=\"imb_Body\" align=center>");
                    imb_FormModal.document.write("</td></tr></table>");
                    imb_FormModal.document.write("</body></html>");
                    imb_FormModal.document.close();
                }
            }
            //显示对话框控件.
            this.ShowModal = function(iCaption, iMessage, iWidth, iHeight,iContent,iFunction)
            {
                var smWidth = 420, smHeight = 180, smCaption = "默认对话框", smMessage="您确定执行这项操作吗?"
                    ,smContent,smFunction,smObject, smAlpha, smInterval;           
                    smWidth = iWidth;
                    smHeight = iHeight;
                    smCaption = iCaption;
                    smMessage = iMessage;
                    smContent = iContent;
                    smFunction = iFunction;                 
                //背景的渐显.
                function checkIMBAlpha()
                {
                    smObject.style.filter = "alpha(opacity="+smAlpha+");";
                    smAlpha += 10;
                    if (smAlpha>70)
                    {
                        clearInterval(smInterval);
                    }
                } 
                
                checkIMBObject();
                this.BackObject = document.getElementById("imb_Background");
                this.FormObject =  document.getElementById("imb_FormModal");
                smObject = this.BackObject;
                smAlpha = 0;
               
                this.BackObject.style.left = 0;
                this.BackObject.style.top = 0;
                this.BackObject.style.width = document.body.scrollWidth;
                this.BackObject.style.height = document.body.scrollHeight;
                //this.BackObject.style.background-color = red;
                this.BackObject.style.visibility = "visible";
                
                smInterval = window.setInterval(checkIMBAlpha, 50);
                this.FormObject.style.left = document.body.clientWidth/2 - smWidth/2+"px";
                this.FormObject.style.top = document.body.clientHeight/2 - smHeight/2+"px";
                this.FormObject.style.width = smWidth+"px";
                this.FormObject.style.height = smHeight+"px"; 
                this.FormObject.style.visibility = "visible";
                //如果考虑兼容性,这里要区分ie和w3c浏览器
                
                imb_FormModal.document.getElementById("imb_Title").innerHTML = "<b>" + smCaption + "</b>";
                imb_FormModal.document.getElementById("imb_Content").innerHTML =smMessage+smContent;
                imb_FormModal.document.getElementById("imb_Body").innerHTML ="<input type=hidden id=imb_Other "
                +"name=imb_Other shortKey=\"O\">   <input type=submit id=imb_Ok name=imb_Ok value=\"Submit\" >"
                +"<input type=button id=imb_Cancel name=imb_Cancel value=\"Cancel\" shortKey=\"C\">";
                
               imb_FormModal.document.getElementById("imb_Ok").onclick= function()
               {
                    switch(smFunction)
                    {
                        case 1:
                    var value;
                    value = frames["imb_FormModal"].document.getElementById("txt_ProjectInvolved").value;
                    if(value == "")
                    {
                       alert("Please input your content");
                    }
                    else
                    {
                      setCookie("ProjectContent",value);
                      document.getElementById("btn_RAddProject").click();
                    }                              
                    document.getElementById("imb_Background").style.visibility = "hidden";
                    document.getElementById("imb_FormModal").style.visibility = "hidden";
                    
                    break;
                       case 2:
                    var value;
                    value = frames["imb_FormModal"].document.getElementById("txt_ResidenceHistory").value;
                    if(value == "")
                    {
                      alert("Please input your content")
                    }
                    else
                    {
                    setCookie("ResidenceHistory",value);
                    document.getElementById("btn_RAddHistory").click();
                    document.getElementById("imb_Background").style.visibility = "hidden";
                    document.getElementById("imb_FormModal").style.visibility = "hidden";
                    }                    break;
                       case 3:
                    var value1,value2;
                    value1 = frames["imb_FormModal"].document.getElementById("txt_Relative").value;
                    value2 = frames["imb_FormModal"].document.getElementById("txt_Family").value;
                    if(value1 == "")
                    {
                       alert("Relation can't be empty");
                    }
                    else
                    {
                       if(value2 == "")
                       {
                          alert("Introduction can't be empty")                      
                       }
                       else
                       {
                          setCookie("Relative",value1);
                          setCookie("FamilyInfo",value2);
                          document.getElementById("btn_RAddFamily").click();
                          document.getElementById("imb_Background").style.visibility = "hidden";
                          document.getElementById("imb_FormModal").style.visibility = "hidden";
                       }
                    }                         
                        break;
                      case 4:                  
                      break
                       default:
                       break;
                    }
               }
                imb_FormModal.document.getElementById("imb_Cancel").onclick= function()
                {
                    
                     document.getElementById("imb_Background").style.visibility = "hidden";
                     document.getElementById("imb_FormModal").style.visibility="hidden";                
                }          
                
            }
        }
    function showResidenceHistory()
        {
            var iContent = "</br><input type=text id=\"txt_ResidenceHistory\" name=\"txt_ResidenceHistory\" style=\"width: 100%\"/></br>"
            +"Until the DateTime</br>"+"<input type=text id=\"txt_Datetime\" name=\"txt_Datetime\" readOnly"
            +" onclick=\"javascript:var oCalendarEn = new PopupCalendar('oCalendarEn');oCalendarEn.Init();getDateString(this,oCalendarEn);\" />";//getDateString(this,oCalendarEn)
            var Br = new innerMessageBox();
           
            Br.ShowModal("Residence History", "Enter your residence history", 320, 200,iContent,2);
        }
      

  11.   

    有个思路,建议一下:
    1、先不用直接用写Script的方式,先用页面直接引用的,这个先保证能正常运行。
    2、再使用写入Script的
      

  12.   

    js在页面文件中直接引用
    或者不要直接用document.write
    function LoadJs(src)
    {
    var script = document.createElement("script");
    script.src = src;var head = document.getElementsByTagName("head");var isExist = false;
    for(var i=0;i<head.length;i++)
    {var _script = head[i].getElementsByTagName("script");
    for(var j=0;j<_script.length;j++)
    {
    if(_script[j].src.toLowerCase() == src.toLowerCase())
    {
      isExist = true;
      break;
    }
    }
    if(isExist)
    break;
    }
    if(!isExist )head[0].appendChild(script);
    }button的onclick = "onPopupCalendar();"function onPopupCalendar()
    {
      LoadJs("日期文件路径");
      setTimeout("_onPopupCalendar()",100);
    }
    function _onPopupCalendar()
    {
    var oCalendarEn = new PopupCalendar('oCalendarEn');
    oCalendarEn.Init();
    getDateString(document.getElement('...'),oCalendarEn);
    }
      

  13.   

    这个问题我碰到过,其实它显示 对象没有初始化,是没有正确把JS控件调入,原因是你肯定使用document.write()一次性调用,并且同时初始化,所以会产生这个问题,解决方法:分多次document.write()输出,最好调用setTime()函数来将时间分开,给机器有足够时间调用它。还有你说的没有权限的问题。。我也遇见过,你在onclick的事件中初始化,因此会产生这个问题