Javascript 从iframe内部从.JS文件调用父函数

Javascript 从iframe内部从.JS文件调用父函数,javascript,asp.net,html,iframe,Javascript,Asp.net,Html,Iframe,我有带上传功能的JS文件。 此文件是从iframe窗口调用的。 我需要根据用户的操作向其显示警报 以下是我所做的,但不起作用: 来自JS文件: $('#btnUpload').on('click', function(){ parent.CallToParent(); }); function CallToParent() { parent.ShowAlert(); } function ShowAlert() { alert('some alert'); } $(do

我有带上传功能的JS文件。 此文件是从iframe窗口调用的。 我需要根据用户的操作向其显示警报

以下是我所做的,但不起作用:

来自JS文件:

$('#btnUpload').on('click', function(){
    parent.CallToParent();
});
function CallToParent()
{
   parent.ShowAlert();
}
function ShowAlert()
{
   alert('some alert');
}
$(document).ready(function () {
    $('#btnUpload').on('click', function() {
        callParent();
    })
});
<script type="text/javascript" src="/common/jq.js"></script>
<script type="text/javascript" src="c.js"></script>
<script>
    function callParent() {
        parent.fn();
    }
</script>

<input id="btnUpload" type="button" />
并从UploaderWindows调用:

$('#btnUpload').on('click', function(){
    parent.CallToParent();
});
function CallToParent()
{
   parent.ShowAlert();
}
function ShowAlert()
{
   alert('some alert');
}
$(document).ready(function () {
    $('#btnUpload').on('click', function() {
        callParent();
    })
});
<script type="text/javascript" src="/common/jq.js"></script>
<script type="text/javascript" src="c.js"></script>
<script>
    function callParent() {
        parent.fn();
    }
</script>

<input id="btnUpload" type="button" />
并在主窗口上:

$('#btnUpload').on('click', function(){
    parent.CallToParent();
});
function CallToParent()
{
   parent.ShowAlert();
}
function ShowAlert()
{
   alert('some alert');
}
$(document).ready(function () {
    $('#btnUpload').on('click', function() {
        callParent();
    })
});
<script type="text/javascript" src="/common/jq.js"></script>
<script type="text/javascript" src="c.js"></script>
<script>
    function callParent() {
        parent.fn();
    }
</script>

<input id="btnUpload" type="button" />

据我所知,这两个上下文之间没有脚本的互操作性


如果您可以控制iframe的内容,那么您可以实现一个“中间人”服务来传递消息。

我认为您做得很正确。不知道
click
事件中的
parent.CallToParent()
是否真的引用了父窗口中的函数。如果没有,那么你可以做类似的事情

来自JS文件:

$('#btnUpload').on('click', function(){
    parent.CallToParent();
});
function CallToParent()
{
   parent.ShowAlert();
}
function ShowAlert()
{
   alert('some alert');
}
$(document).ready(function () {
    $('#btnUpload').on('click', function() {
        callParent();
    })
});
<script type="text/javascript" src="/common/jq.js"></script>
<script type="text/javascript" src="c.js"></script>
<script>
    function callParent() {
        parent.fn();
    }
</script>

<input id="btnUpload" type="button" />
和来自iframe:

$('#btnUpload').on('click', function(){
    parent.CallToParent();
});
function CallToParent()
{
   parent.ShowAlert();
}
function ShowAlert()
{
   alert('some alert');
}
$(document).ready(function () {
    $('#btnUpload').on('click', function() {
        callParent();
    })
});
<script type="text/javascript" src="/common/jq.js"></script>
<script type="text/javascript" src="c.js"></script>
<script>
    function callParent() {
        parent.fn();
    }
</script>

<input id="btnUpload" type="button" />

函数callParent(){
parent.fn();
}
主文件

<script>
    function fn() {
        console.log('Parent function called');
    }
</script>

<iframe src="b.html"></iframe>

函数fn(){
log('调用父函数');
}

iframe中是否有其他iframe?或者只是iframe中的一个家长和一个iframe?JS文件,需要显示警报。他说这是一个文件上传者,他怎么能不能控制它的内容呢?请看我上面发布的代码,它对我有用。。我怀疑您正在将事件绑定到按钮上,然后再渲染它。您是否在事件处理程序中尝试了
console.log
?我可以从JS调用它的父函数,但是从这个函数它找不到下一个父函数。但是当我直接从iframe打电话给它的家长时,工作就很好了。有什么区别?为什么要调用
CallToParent
,就好像它是父窗口中定义的函数一样?它位于包含JS文件的同一页面中。因此,它位于同一窗口的范围内。