带有Onload事件的HTML上的OnChange事件foriFrame

时间:2016-08-11 20:20:09

标签: javascript html dom iframe javascript-events

我有SAP系统,我可以集成HTML页面。此HTML页面在Button Click上启动。

按钮单击会更改每次Iframe源的值。 据我所知基本,我编写了下面的代码,它在First Click上工作正常.Html页面被加载

<!DOCTYPE html>
<html>
<body onLoad="myFunction()">
<iframe id="myFrame" src="http://www.w3schools.com/" height="1000" width="2000" frameborder="0"></iframe>
<script>
function myFunction() {

  document.getElementById("myFrame").src = sap.byd.ui.mashup.context.inport.FirstName;

}
</script>
</body>
</html>

当我第二次点击时,sap.byd.ui.mashup.context.inport.FirstName的值会发生变化,但iframe中没有变化。

我看到有一些名为onChange的事件,但我无法正确使用它。任何人都可以帮我这样做。

由于 普拉特

1 个答案:

答案 0 :(得分:1)

一个丑陋的解决方案是不断检查FirstName的值,以便检查更改。

<script>
  var _firstname;

  function myFunction() {
    document.getElementById("myFrame").src = sap.byd.ui.mashup.context.inport.FirstName;
    _firstname = sap.byd.ui.mashup.context.inport.FirstName;
  }

  setInterval(function() {
      if (_firstname != sap.byd.ui.mashup.context.inport.FirstName)
        myFunction();
    }, 1000) //check every second to see if FirstName value changed
</script>

但我绝对建议您从更改myFunction()的任何地方致电sap.byd.ui.mashup.context.inport.FirstName,以避免使用setInterval如果您可以更改javascript对象的值,您也应该能够进行函数调用。我建议您研究如何调用javascript函数并在您之后立即调用myFunction()改变FirstName。那么您将不需要setInterval