问题如下
我做的是弹出框架效果,我想在在弹出的框架中使用引入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);\"
运行后,没有刚才找不到对象的问题了,但是出现更加恶心的 没有权限
求好心的高手能帮帮我
我做的是弹出框架效果,我想在在弹出的框架中使用引入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);\"
运行后,没有刚才找不到对象的问题了,但是出现更加恶心的 没有权限
求好心的高手能帮帮我
是不是js所在的文件夹asp.net帐户没有访问的权限?
根据传入js的参数来执行不同的效果
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);
+"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中,当然会出错
我把所有的代码都发上来,就是有点长,(源代码是个仿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>
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";
}
}
}
最后调用这个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文件是面向对象的),实例化后就会出现没权限调用
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>
你对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);
}
1、先不用直接用写Script的方式,先用页面直接引用的,这个先保证能正常运行。
2、再使用写入Script的
或者不要直接用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);
}