【问题标题】:Can't change properties of a window object using javascript无法使用 javascript 更改窗口对象的属性
【发布时间】:2014-03-03 07:06:28
【问题描述】:

我正在尝试创建一个窗口并动态更改其属性。

但是当我加载网页时(例如:www.google.com):加载完美;并按下“红色”按钮,窗口将向后移动,并且不会改变其背景颜色。

这是我的代码:

JavaScript

var win1 ='';
function create(){
    var url1=document.getElementById('myUrl').value;
    win1=open(url1,'hello', 'width=500,height=500');
}

function makeItRed(){
    win1.document.body.style.backgroundColor="red";
    win1.focus();
}

function closeIt(){
    win1.close();
}

HTML

<input type="text" id="myUrl"/>
<button onClick="create()">Click</button>
<button onClick="makeItRed()">Red</button>
<button onClick="closeIt()">close</button>

【问题讨论】:

  • link 引用了这个。
  • 控制台中是否记录了任何错误?框架受same origin policy 限制,这将防止修改不属于您的资源。
  • 感谢@Atal,但我需要在加载后更改属性。 :(
  • 是的@JonathanLonowski 我在日志中看到“未捕获的安全错误”,知道如何解决这个问题吗??

标签: javascript html


【解决方案1】:

出于安全原因,您不能在没有permissions from those sites or workarounds 的情况下操纵第三方网站内容。请参阅 details about Same Origin Policysharing Cross Origin Resources

如果窗口内容是您自己网站的另一个页面,则代码应该可以工作。

【讨论】:

  • 谢谢。有什么想法可以做我正在尝试的事情吗?一旦我看到扩展程序将脚本注入页面并执行此操作。有什么方法可以通过扩展访问窗口吗??
  • 出于安全原因,许多网站(如 google)不允许在 iframe 中加载。 .
  • 进行跨域更改的“正确”方法需要其他服务器上的权限或代码才能让您这样做,而大多数网站实际上不会这样做。另一种方法是使用代理,以使内容看起来像是来自您的服务器。你的实际目标是什么?
  • 创建一个检查元素类型的页面。所以我可以在我的页面中获取元素列表并选择并突出显示它们。关于那个代理的任何链接?我发现的链接真的很复杂:(
  • 您可以使用和查看这个开源示例中的代码whateverorigin.org
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-15
  • 1970-01-01
  • 1970-01-01
  • 2021-11-13
  • 2021-03-06
相关资源
最近更新 更多