Javascript iframe js问题

Javascript iframe js问题,javascript,iframe,Javascript,Iframe,我不熟悉web开发和js。我了解一些js和jQuery,但还不足以编写有用的代码,所以我希望在这里得到帮助。我正在通过iFrame(弹出窗口和直接链接之外,这是最好的方式)将一些第三方web应用程序合并到我的网站中,并有一个由两部分组成的问题 1) web应用程序不允许直接编码,只允许有限数量的css样式选项。我可以上传背景图像并更改背景颜色,但我不能使其透明。我想调整iframe,使我的网站背景显示出来。根据Firebug,我可以简单地完全去掉背景色选项,问题就解决了 问题是,这些应用程序位于

我不熟悉web开发和js。我了解一些js和jQuery,但还不足以编写有用的代码,所以我希望在这里得到帮助。我正在通过iFrame(弹出窗口和直接链接之外,这是最好的方式)将一些第三方web应用程序合并到我的网站中,并有一个由两部分组成的问题

1) web应用程序不允许直接编码,只允许有限数量的css样式选项。我可以上传背景图像并更改背景颜色,但我不能使其透明。我想调整iframe,使我的网站背景显示出来。根据Firebug,我可以简单地完全去掉背景色选项,问题就解决了

问题是,这些应用程序位于不同的域,导致了跨域问题,我想大部分代码都是服务器端使用动态视图控制器(在我头上),因此直接将代码合并到我的站点可能不起作用。我的“IT人员”说,我们应该能够在我的.php文件中以iframe为目标,并在加载iframe后更改样式,因为样式是级联的。但是,iframe以及页面上的所有其他内容都没有命名(没有类或ID),因此为了定位它,我必须使用某种类型的(“this”).child.child(“body”)之类的东西。到目前为止,我们所做的任何尝试都没有奏效。如果我可以针对iframe,我可以更改其他小问题,例如无法正确显示的按钮

2) 如果我设置了一个iframe高度,iframe显示的东西比高度长,它就会被切断(很明显)。我需要iframe具有动态高度,因此如果iframe的内容发生变化,iframe的高度也会发生变化。我看过一些代码片段,但我不知道我在做什么,令人惊讶的是它没有工作。我希望能学到一点js魔法,如果这能奏效的话

测试页面位于。如果有帮助的话,我可以提供我当前的代码,但我不想污染董事会。作为参考,web应用程序是DJ智能工具,特别是(http://www.djintelligence.com/music)

谢谢你的帮助。每一点都有帮助,如果我不能让它工作,我将不得不停止使用web工具。

我的“IT人员”说,我们应该能够在.php文件中定位iframe,并在加载iframe后更改样式,因为样式层叠。”

这有很多错误

  • 加载iframe后,它已在浏览器中位于客户端。PHP没有发言权
  • 样式在当前DOM中级联。您的iFrame对于一个完全不同的DOM来说是一个“洞”。您无法对来自另一个域的iFrame中的内容设置样式
我需要iframe具有动态高度,因此如果iframe的内容发生更改,iframe的高度也会随之更改

我可以想出一些疯狂的服务器端黑客来计算,但是,唉,你对此也无能为力


当您将其他站点加载到iFrame中时,您必须记住它们不是您的站点。这不是你的密码。出于明显的安全原因,浏览器不允许您直接操作iFrame的内容

Kyle,你完全正确,如果父域和子域不同,你就不能访问iframe内容,在你的情况下,这是正确的。父URL为“http://www.nightaliveent.com“并且子域(第三方web应用程序)为”http://www.nightaliveent.djintelligence.com/music"

如果在页面加载后尝试访问iframe内容,它会引发以下异常

$("iframe").contents()

不安全的JavaScript试图从带有URL的框架访问带有URL的框架。域、协议和端口必须匹配。

当iframe在同一个域上使用时,您只能“访问”iframe中的内容(安全),尝试从另一个域访问它将永远无法工作。另外,最好不要使用iframe(折旧),而是使用object。对于某些IE版本,您需要一个iframe,因为IE不符合W3C(离题:在我看来,IE是一坨屎)

如果要从另一个站点加载内容部分,可以使用ajax,在检索页面后过滤掉所需的内容。参考jQuery.ajax函数,您可以定义成功和错误回调。例如:

$.ajax({
   async:true,
   cache:true,
   url: 'your url',
   success:function(s) { alert('the string is: '+s); <filter contents and set target> },
   error:function() { alert('failed'); }
});
$.ajax({
async:true,
是的,
url:“您的url”,
成功:函数{alert('字符串为:'+s);},
错误:函数(){alert('failed');}
});

希望能有所帮助。

这与我们在a.php中尝试的“getContents…”类似,包括该文件。它工作了,但是页面的动态内容没有加载。此方法失败并出现错误“无法加载XMLHttpRequest。访问控制不允许原点允许原点。我想在fail函数中回显访问控制状态,以便查看它是否已设置。我看到有人提到json,但添加ajax头并没有起作用。在我看来,它必须通过请求的站点进行控制。它与file_get_contents()不同,当您想要使用该服务器端时,最好使用curl扩展。不相似的原因是,这是服务器端,另一个是客户端。客户端还将发送一个“HTTP_X_REQUESTED_WITH”头选项,而服务器端不发送。也许源代码受保护,可以被ajax调用。另一方面,你必须为服务付费,你不能免费使用它,所以我认为你试图做的是违法的。询问他们是否有api将其集成到您的网站中,但我认为当他们有api时,它是ASP编写的。此外,当我查看您的页面时,您希望让用户相信这是您的服务。我认为这也是违法的。要求一个API,或者放弃自己构建一些东西。只是为了澄清一下,我正在为服务付费,所以我试图做的并不违法。他们提供了有限的CSS样式工具,并计划在未来进行更新,所以我正在工作