objdiv.onclick = new Function("alert(1)"); 貌似div没有click事件把,这句换一下,写成试试:objdiv.onmousedowen = function(){ alert(1) }
用attachEvent可以实现onclick不过onclick事件不会在html中展示出来 <%@ Page language="c#" Codebehind="ParentCreate.aspx.cs" AutoEventWireup="false" Inherits="test.ParentCreate" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" > <HTML> <HEAD> <title>ParentCreate</title> <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1"> <meta name="CODE_LANGUAGE" Content="C#"> <meta name="vs_defaultClientScript" content="JavaScript"> <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5"> <script language=javascript> function create() { var parentDocument = window.document; var objdiv = parentDocument.createElement("div"); var objname = "aa"; objdiv.id = objname; objdiv.style.border = "0px"; objdiv.style.width = "100"; objdiv.style.height = "100"; objdiv.style.top = "0"; objdiv.style.left = "0"; objdiv.style.backgroundColor = "red"; objdiv.attachEvent("onclick", new Function("alert(1)")); parentDocument.getElementById("bb").appendChild(objdiv); alert(objdiv.outerHTML); } </script> </HEAD> <body MS_POSITIONING="GridLayout" onload="create()"> <form id="bb" method="post" runat="server">
</form> </body> </HTML>
主页面代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function create(){ var url = "/Noname2.html"; var uploadurl = window.open(url,'newwindow','width=400,height=400,top=380,left=500'); } //--> </SCRIPT> <BODY> <INPUT TYPE="button" VALUE="aaa" ONCLICK="create()"> <div name="bb" id="bb" style="float:left;padding:10px;border:1px solid #55759C;"> </div> </BODY> </HTML> 子页面代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE> New Document </TITLE> <META NAME="Generator" CONTENT="EditPlus"> <META NAME="Author" CONTENT=""> <META NAME="Keywords" CONTENT=""> <META NAME="Description" CONTENT=""> </HEAD> <SCRIPT LANGUAGE="JavaScript"> <!-- function create() { var parentDocument = window.opener.document; var objdiv = parentDocument.createElement("div"); var objname = "aa"; objdiv.id = objname; objdiv.style.border = "0px"; objdiv.onclick = new Function("alert(1)"); //objdiv.attachEvent("onclick", new Function("alert(1)")); parentDocument.getElementById("bb").appendChild(objdiv); alert(objdiv.outerHTML); } //--> </SCRIPT> <BODY> <INPUT TYPE="button" VALUE="aaa" ONCLICK="create()"> </BODY> </HTML>
to liuyilidan 我的代码里把 objdiv.attachEvent("onclick", new Function("alert(1)"));注释了,是因为我试了,无效,所以注释掉了
to AWHeaVen onmousedowen也无效:( 如果代码在一个页面上是可以的,如果是子页面就不行了
不能用new Function(); 因为这样是在子窗口new出来的对象。 像下面这样可以实现。 也可以通过调用父窗口的方法让对象在父窗口中创建。 不过这里还是直接使用innerHTML方便些。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <title>Untitled Document</title> </head> <script language="JavaScript"> function create(){ var parentDocument = window.opener.document; var str="<div name='aa' style='width:575px;height:128px;text-align:center;overflow:hidden;background-color: #000000;' onclick='alert(1);'>"; parentDocument.getElementById("bb").innerHTML += str; } </script> <body> <input type="button" onclick="create()" value="test"> </body> </html>
父窗口 <script> window.open('childwindow.htm')//打开子窗口 function create(){ document.getElementById("bb").innerHTML="<div id=aa1 name=aa style='border:0px;' onclick='alert(1)'>new div in bb div</div>" } </script> <div id=bb></div>
第一个页<!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> <script> function op(){ var o = window.open("d2.html",'xx'); } op(); </script> </body> </html> 第二个页 <!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> <script> function create() { var parentDocument = window.opener.document; var objdiv = parentDocument.createElement("div"); objdiv.id = 'aa'; objdiv.style.border = "1px"; objdiv.innerHTML = '<a href="http://www.hansir.cn">中华人民共和国</a>'; objdiv.onclick = function(){ alert(this.id); } parentDocument.body.appendChild(objdiv); } create(); </script> </body> </html>
忘了写子窗口代码,看这个 父窗口 <script> window.open('childwindow.htm')//打开子窗口 function create(){ document.getElementById("bb").innerHTML="<div id=aa1 name=aa style='border:0px;' onclick='alert(1)'>new div in bb div</div>" } </script> <div id=bb></div> ------------------------ 子窗口:childwindow.htm <script> opener.create(); </script>
恩,我知道用innerHTML是可以的 谢谢
实在不想用innerHTML的话, 你就这样做吧。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>Untitled Document</title> </head> <script language="JavaScript"> function create(){ var parentDocument = window.opener.document; var objdiv = parentDocument.createElement("div"); var objname = "aa";
alert(1)
}
<%@ Page language="c#" Codebehind="ParentCreate.aspx.cs" AutoEventWireup="false" Inherits="test.ParentCreate" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>ParentCreate</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script language=javascript>
function create()
{
var parentDocument = window.document;
var objdiv = parentDocument.createElement("div");
var objname = "aa";
objdiv.id = objname;
objdiv.style.border = "0px";
objdiv.style.width = "100";
objdiv.style.height = "100";
objdiv.style.top = "0";
objdiv.style.left = "0";
objdiv.style.backgroundColor = "red";
objdiv.attachEvent("onclick", new Function("alert(1)"));
parentDocument.getElementById("bb").appendChild(objdiv);
alert(objdiv.outerHTML);
}
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" onload="create()">
<form id="bb" method="post" runat="server">
</form>
</body>
</HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function create(){
var url = "/Noname2.html";
var uploadurl = window.open(url,'newwindow','width=400,height=400,top=380,left=500');
}
//-->
</SCRIPT>
<BODY> <INPUT TYPE="button" VALUE="aaa" ONCLICK="create()">
<div name="bb" id="bb" style="float:left;padding:10px;border:1px solid #55759C;">
</div>
</BODY>
</HTML>
子页面代码
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<SCRIPT LANGUAGE="JavaScript">
<!--
function create() {
var parentDocument = window.opener.document;
var objdiv = parentDocument.createElement("div");
var objname = "aa";
objdiv.id = objname;
objdiv.style.border = "0px";
objdiv.onclick = new Function("alert(1)");
//objdiv.attachEvent("onclick", new Function("alert(1)"));
parentDocument.getElementById("bb").appendChild(objdiv);
alert(objdiv.outerHTML);
} //-->
</SCRIPT>
<BODY>
<INPUT TYPE="button" VALUE="aaa" ONCLICK="create()">
</BODY>
</HTML>
我的代码里把
objdiv.attachEvent("onclick", new Function("alert(1)"));注释了,是因为我试了,无效,所以注释掉了
onmousedowen也无效:(
如果代码在一个页面上是可以的,如果是子页面就不行了
因为这样是在子窗口new出来的对象。
像下面这样可以实现。
也可以通过调用父窗口的方法让对象在父窗口中创建。
不过这里还是直接使用innerHTML方便些。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>
<script language="JavaScript">
function create(){
var parentDocument = window.opener.document;
var str="<div name='aa' style='width:575px;height:128px;text-align:center;overflow:hidden;background-color: #000000;' onclick='alert(1);'>";
parentDocument.getElementById("bb").innerHTML += str;
}
</script>
<body>
<input type="button" onclick="create()" value="test">
</body>
</html>
父窗口
<script>
window.open('childwindow.htm')//打开子窗口
function create(){
document.getElementById("bb").innerHTML="<div id=aa1 name=aa style='border:0px;' onclick='alert(1)'>new div in bb div</div>"
}
</script>
<div id=bb></div>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>
<body>
<script>
function op(){
var o = window.open("d2.html",'xx');
}
op();
</script>
</body>
</html>
第二个页
<!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>
<script>
function create() {
var parentDocument = window.opener.document;
var objdiv = parentDocument.createElement("div");
objdiv.id = 'aa';
objdiv.style.border = "1px";
objdiv.innerHTML = '<a href="http://www.hansir.cn">中华人民共和国</a>';
objdiv.onclick = function(){
alert(this.id);
}
parentDocument.body.appendChild(objdiv);
}
create();
</script>
</body>
</html>
父窗口
<script>
window.open('childwindow.htm')//打开子窗口
function create(){
document.getElementById("bb").innerHTML="<div id=aa1 name=aa style='border:0px;' onclick='alert(1)'>new div in bb div</div>"
}
</script>
<div id=bb></div>
------------------------
子窗口:childwindow.htm
<script>
opener.create();
</script>
谢谢
实在不想用innerHTML的话,
你就这样做吧。<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Untitled Document</title>
</head>
<script language="JavaScript">
function create(){
var parentDocument = window.opener.document;
var objdiv = parentDocument.createElement("div");
var objname = "aa";
objdiv.id = objname;
objdiv.style.width = "100%";
objdiv.style.height = "100%";
objdiv.onclick = window.opener.eval("new Function('alert(1);')");
//objdiv.attachEvent("onclick", function("alert(1)"));
parentDocument.getElementById("bb").appendChild(objdiv);
alert(objdiv.outerHTML);
}
</script>
<body>
<input type="button" onclick="create()" value="test">
</body>
</html>