【问题标题】:Running Javascript on top of window.open() window在 window.open() 窗口上运行 Javascript
【发布时间】:2018-01-01 15:06:50
【问题描述】:

假设我通过将 url 传递给 window.open() 函数来打开一个网页 (www.facebook.com)。由于我在 window.open() 函数中使用了“_blank”,因此我的窗口作为新浏览器打开。

我想在新打开的窗口上运行我自己的 javascript。当我研究时,发现了一些我在源代码中添加的解决方案,如下所示。但不幸的是,我的 javascript 无法在新打开的窗口上运行。有人可以帮我吗?

<!DOCTYPE html>
<html>
<head>
<script>

	function myFunction() {
		var url = document.getElementById("myText").value
		var newWindow = window.open(url,'_blank','height=400,width=600,left=10,top=10,scrollbars=yes,menubar=yes,titlebar=yes')
		var newScript = newWindow.document.createElement('script');
		//console.log(newScript);
		newScript.setAttribute('type','text/javascript');
		newScript.setAttribute('src','C:/Users/30216/Desktop/jquery_edited_new1.js');
		newWindow.document.getElementsByTagName("head")[0].appendChild(newScript);
		//console.log(newWindow);
		//newWindow.document.head.appendChild(newScript);
		
}
		
</script>
</head>
<body>
<table align = "center">
<frame>
<tr>
	<td class="url">Enter the URL:</td>
	<td>
		<input type="text" id="myText"></input>
	</td>
</tr>
<tr>
	<td>
		<button id="browser_open" onclick = "myFunction()">Submit</button>
	</td>
</tr>
</frame>

</body>
</html>

 

【问题讨论】:

  • 你不能那样做。清除跨源违规(在此处阅读:developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS)。如果您认为您只需从您的站点打开一个 Facebook 登录页面并获取用户的登录信息,那么哈哈,算了。 ;)
  • 如果您想在您选择的网页上运行自己的 JavaScript,那么 TamperMonkey/GreaseMonkey 插件就是您想要的。

标签: javascript


【解决方案1】:

您只能根据Same-Origin-Policy访问该文档。

如果您打开另一个网页,例如 Facebook,而打开 facebook.com 的网页不使用相同的域、协议和端口,它将无法访问该页面的文档。

想象一下,如果您没有此政策,会做什么。例如。您将能够打开 Facebook,秘密安装键盘记录器并告诉用户登录。

【讨论】:

  • 如果我在这个 stackoverflow 链接中提到的网络服务器上运行我的 HTML 是否可以实现:stackoverflow.com/questions/29983786/…:@idmean
  • @Karthikeyan 这很简单:如果您的网站与您打开的窗口具有相同的域、端口和协议(即,它是同一个站点),那么它就不会起作用。您链接的答案仅涉及开发。这是出于安全原因,并且(应该)没有办法规避这一点。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 2010-10-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多