Javascript 在html页面中的iframe内显示警报框

Javascript 在html页面中的iframe内显示警报框,javascript,html,dom,Javascript,Html,Dom,有一个简单的HTML页面,名为say abc.HTML。现在abc.html有一个名为“点击我”的按钮。这个页面,abc.html,也有一个iframe,id是“myframe” 现在我想要的是,当点击“单击我”按钮时,iframe中会出现一个名为“myframe”的警报框。我该怎么做 我试过下列方法 window.frames[0].contentWindow.alert("this is the iframe"); 但这似乎不起作用。请让我知道为什么这不起作用,还有什么可以替代的解决方案

有一个简单的HTML页面,名为say abc.HTML。现在abc.html有一个名为“点击我”的按钮。这个页面,abc.html,也有一个iframe,id是“myframe”

现在我想要的是,当点击“单击我”按钮时,iframe中会出现一个名为“myframe”的警报框。我该怎么做

我试过下列方法

window.frames[0].contentWindow.alert("this is the iframe");

但这似乎不起作用。请让我知道为什么这不起作用,还有什么可以替代的解决方案

ContentWindow是从文档而不是窗口派生的


您要做的是将警报添加到iframe页面上的函数中,然后使用
document.getElementById('targetFrame').contentWindow.targetFunction()
调用它(使用targetFunction作为示例)。可能会为您提供有关技术的更多信息。

这可能会对您有所帮助:

function body_load()
{       
    document.getElementById('loader').src;
}


如果
的源代码来自与父页面不同的域,您将访问浏览器,这意味着您无法对该页面执行任何操作


对于“替代建议”,它确实取决于您想要实现的目标以及用户应该体验的体验。

浏览器级别的
警报
与特定框架没有明显的关联。您将始终获得以浏览器窗口为中心的警报,而不是以调用该警报的窗口/框架为中心的警报



如果您需要此功能,您必须使用自己的模式对话,或者使用一个显示它们的库。

如果IFRAME内容是从另一个URL加载的,则无法通过JavaScript.ok访问/修改这些内容。。但是我不想修改/访问从不同URL加载到iframe中的页面内容。我只想在iframe的窗口对象中显示一个警报框。有可能吗?您说contentWindow是从文档而不是窗口派生的,但根据W3cSchools教程,contentWindow是iframe对象的一个属性。其次,iframe加载一个我无法控制的不同URL。因此,我不能修改iframe的内容。作为一个黑客,只需在iframe所在的位置创建一个包含完整页面框架的新页面;并将javascript添加到页面中。你是对的,但是页面中的元素是作为document类的子类派生的,所以我的声明也是正确的,但是是抽象的。。。但是您是否介意详细介绍一下您的hack。创建一个名为inlinepage.html的新文件,在该文件中创建一个框架,指向您的iframe当前指向的位置。全屏显示。还可以在此页面中添加一个脚本,该脚本具有警报框功能。现在,让您的iframe指向inlinepage.html,您应该可以开始了。即使这样似乎也不起作用。在任何情况下,如果我使用document.getElementById('loader').contentWindow.alert(“这是iframe”),又有什么关系呢;根据您的建议,或者如果我使用window.frames[0].contentWindow.alert(“这是iframe”);正如我所做的那样,我不去尝试。当你在按钮上调用此警报时,单击鼠标右键..那么发生了什么错误在按钮上单击时,警报框不会出现。根本不会出现在主窗口或iframe中。不。。。伙计。。。那不是我想要的。我想要的是iframe中的一个简单警报框。这个iframe在加载时会出现在其他网站的主页上。让我们确定一下。这是我真正想做的。我想实际检查当iframe中的页面加载时,iframe上的滚动条是否已滚动。为此,我考虑使用窗口对象的pageXOffset和pageYOffset。现在我想知道iframe返回的窗口对象是否也支持这些属性。因此,为了检查这一点,我尝试对iframe返回的窗口对象使用alert方法。@geek,不确定您是否理解我。。。同源策略意味着您不能对该页面执行任何操作。这包括更新和检测——你不能访问任何东西。我确实理解同源策略约束。因此,我无法检测页面加载到iframe后iframe窗口是否已滚动?@Geek,我不知道。。。如果有,我会吃掉我的帽子!您可以编辑您的htaccess文件或Nginx配置文件以允许跨源请求(它们可能需要是同一父域上的子域,并且您肯定需要拥有这两个子域并能够编辑这些文件)。(主要挑剔警告)它在Chrome中。。。警告框的标题栏上写着:好点子!我显然一点也不注意提醒标题。老实说,我以为在其他浏览器上也是如此,但我并没有在FF12或IE9中快速测试过。警报就像交通标志,你看到的越多,你忽略的越多!
<div id='mydiv'>
    <input type="button" value="Click Me" onclick="body_load();" />
</div>
<iframe id='loader' onload="body_load(this)" name="Google"  scrolling="auto" style="width:95%;height:600px" src="http://www.image.com"></iframe>