0

SharePoint 2013用の(SharePointでホストされている)アプリパーツを開発すると、エラーメッセージ「オブジェクト」が定義されていません。他の場合(ロードしている外部の.jsファイルによって異なります)、「関数」が定義されていないというエラーが発生する場合があります。具体的には、アプリパーツを(wiki)ページに追加するときにのみこのエラーが発生します。ページはIE9の標準モードで読み込まれます(ただし、エラーはCompat Viewでも発生します)。

Microsoftで次の情報を見つけました:iFrameがDOMツリーから削除されている場合はAPIを使用できません=> http://msdn.microsoft.com/en-us/library/gg622929(v=VS.85).aspx?ppud= 4

アプリパーツ(実際には単純なIFrameオブジェクト)のソースとしてロードしようとしているHTMLページの先頭に簡単なアラートを追加しました。実際、アプリパーツを追加すると、ページが複数回読み込まれます。 。アプリパーツが追加されると、アラートは1回だけトリガーされ、「オブジェクト」で定義されていないエラーは発生しません。そのため、私のアプリパーツは最初に作成され、次に数回操作された(DOMに接続されたり、切り離されたりする)と思われます。

私のアプリパーツは、DOMから一時的に削除されているため、JavaScriptAPIが削除されているようです。その場合、JavaScriptに依存するアプリパーツを開発するにはどうすればよいですか(そもそもJavaScriptに依存すべきではありませんか?!)...

4

1 に答える 1

0

JavaScript API が再び利用可能になるまでページをリロードすると、この動作を「抑える」ことができます (これは、最後に IFrame が切り離されて再度接続された後のようです)。したがって、次のスクリプトをページのヘッドの最初のステートメントとして単純に配置します。

<script type="text/javascript">
    // Work-around for IE9 (http://msdn.microsoft.com/en-us/library/gg622929(v=VS.85).aspx?ppud=4)
    if (typeof Object == 'undefined' || typeof Function == 'undefined') {
        window.location.reload();
    }
</script>

それでも、この「プリエンプティブ」なガベージ コレクションは、機能ではなくバグのように思えます。

于 2013-03-16T20:17:24.733 に答える