2016-08-11 15 views
0

私はHTMLページを統合できるSAPシステムを持っています。このHTMLページはButton Clickで公開されています。OnChangeイベントforiFrame onloadイベント付きHTML

ボタンをクリックすると、Iframeソースの値が毎回変更されます。 私は基本を理解するように、私は私が二度目にsap.byd.ui.mashup.context.inport.FirstName変化の値をクリックすると

<!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> 

をロードされる第Click.TheのHTMLページ上で正常に動作している以下のコードを書きましたが、中に変化がありませんIframe。

onChangeというイベントがありましたが、正しく使用することができません。誰でも私にこれを手伝うことができますか?

おかげ プラット

+0

このコードにはボタンはありません。一度しか動かない 'body onload'であなたの関数を呼び出すだけです。 – Ozan

+0

@Ozan:ボタンはSAPシステムにあり、 'sap.byd.ui.mashup.context.inport.FirstName'の値を変更します。この部分はSAPシステムに統合されています。 – GameBuilder

+0

ここで、あなたのコードでは、 'iframe'の' src'は 'myFunction()'に変わります。そして、それは 'body onload'で呼び出されます。これはhtmlページで一度だけ実行されます。 'sap.byd.ui.mashup.info.FirstName'の値を' iframe.src'に設定すると、 'FirstName'を変更しても' iframe.src'には影響しません。 'If​​rame.src'を変更するために' Firstname'を変更した後で 'myFunction()'をもう一度呼び出す必要があります。 – Ozan

答えて

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> 

しかし、私は間違いなくあなたがsetIntervalの使用を避けるためにsap.byd.ui.mashup.context.inport.FirstNameを変更どこからmyFunction()を呼び出すことをお勧めします。 JavaScriptオブジェクトの値を変更できる場合は、関数呼び出しを行うこともできます。私はあなたがFirstNameを変更した直後にmyFunction()を呼び出すだけで、javascript関数を呼び出す方法を研究することをお勧めします。その後、setIntervalは必要ありません。

関連する問題