【发布时间】:2015-11-25 09:02:24
【问题描述】:
我在使用 HTML 和 javascript 时遇到以下问题。 我的网站在一个 div 中包含一个 HTML 页面,如下所示:
<object name="cont" type="text/html" data="myHtmlPage.html"></object>
我有一个 javascript 函数(链接到主页)可以更改该对象的内容。
代码运行良好,因为我可以在“内部”页面中导航而无需更改外部上下文。
问题是现在我需要从加载在该对象中的 html 页面调用主页 javascript 上的一个函数(需要在主页上调用,因为我必须更改主页的一些属性div)
有没有办法做到这一点?
希望我说清楚了,谢谢你的帮助。
马特奥
编辑:
我有一个包含一系列部分的 index.html(是一个单页网站)。
在一个部分 (#services) 中,我有两个 div:一个可以选择服务,一个有 iFrame(#content)(以前是 html 对象)。
在一个js(serviceMenuHandler.js)中有这个函数:
function changeService(servizio){
var pathServizio;
var pathMenu;
pathServizio = servizio + ".html";
pathBg = 'url(img/'+servizio+'.jpg)';
if(servizio=="applicazioni" || servizio == "progettazione"){
pathServizio = "errore.html";
}
document.getElementById('content').src=pathServizio;
$("#services").css('background',pathBg);}`
}
我有另一个页面,我们称之为 serivice1.html,它是通过 iFrame 中的该函数加载的,可以正常工作。
我需要从那个页面调用父页面上的 changeService 函数,这样我就可以更改服务和背景。
正如 JSantosh 所建议的,我在 service1.html 中有一个 JavaScript 函数,它调用方法 parent.changeService(service) 但它不执行任何操作。
我通常通过 <script type="text/javascript" src="js/serviceMenuHandler.js"></script> 在 body 顶部加载 js,所以在 iFrame 之前。
希望现在更清楚, 谢谢
编辑 2:
使用 Firefox,它可以按照 cmets 中的建议轻松调用父级上的函数。
有人知道为什么它不能在 Chrome 上运行吗?
【问题讨论】:
-
你为什么使用
<object>而不是<iframe>(这实际上会给你同样的东西,只是有更好的支持和定义更好的API集)? -
因为我不是这个领域的专家,而且它看起来是更好的解决方案。无论如何,如果有办法从 iframe 做我想做的事,那么在 iframe 中更改它对我来说不是问题!
-
尝试从
myHtmlPage.html拨打parent.functionName() -
@JSantosh 不起作用
-
它对我有用。只需在 DOM 中加载您要在
iframe或object之前调用的 JS 函数并尝试。 @Matteo
标签: javascript jquery html css html-object