2012-03-21 10 views
2

ユーザーが最初にSharePointサイトを開くときに、「用語の使用」モーダルダイアログをポップアップ表示します。私はSP.UI.ModalDialog.showModalDialog()機能を使用しています。これは、SharePoint コンテンツエディタ Webパーツで作成されます。SharePoint 2010のJavascript window.onloadの問題

最初にページを開くと、[モーダル]ダイアログが正常に動作します。ただし、ページを再度開くと機能しません。誰もこの問題を解決する方法について私を助けることができますか?キャッシングの問題のようですか?ここで

は私のJavaScriptのである:

<script type="text/javascript"> 
    function codeAddress() { 
     alert('ok'); 
     var options = { 

      url: 'http://www.google.com', 
      Title: "Survey", 

      height: 500 

     }; 
     SP.UI.ModalDialog.showModalDialog(options); 
    } 
    window.onload = codeAddress; 
</script> 
+1

あなたのJavaScriptには何も問題はありません。結局のところ、あなたはそれが動作するのを見ました。キャッシュをクリアしてもう一度動作させようとしましたか?また、SharePointがコードを「有益に」変更していないことを確認することもできます。 –

答えて

3

代わりのwindow.onload = codeAddress、使用:

_spBodyOnLoadFunctionNames.push("codeAddress");

およびSharePointは、ウィンドウの負荷であなたの関数を呼び出します。 _spBodyOnLoadFunctionNames自体がSharePointオブジェクトです。

私はこの問題があり、理由を説明するthis linkに出くわしました。

JavaScriptを使用するWebパーツやその他のコントロールを開発する場合、WebページのBody OnLoadイベントでいくつかの関数を呼び出す必要があることはよくあります。この問題は、SharePointではBody要素がコントロールではなくマスターページにあるため、これを行うのは難しいことです。

幸いにも、SharePointチームは、_spBodyOnLoadFunctionNamesという特殊な配列を使用して、開発者にこれを簡単に行う方法を提供しました。あなたがしなければならないのは、関数の名前をこの配列にプッシュすることだけです。ウィンドウのOnLoadイベントで呼び出されます。