スクリプト リンクのカスタム アクションに問題があります。SharePoint アプリを構築しています。この特定のスクリプトを SharePoint サイトのすべてのページに挿入したいので、スタイル ライブラリ内のスクリプト ファイルを指すサイト スコープのカスタム アクションを正常に追加しました。
特定の状況では機能しますが、特定の条件下では明確な理由なくスクリプト リンク インジェクションが機能しなくなります。たとえば、ルート Web に到達すると、スクリプトが挿入されます。しかし、この Web 内の特定のリンク (ホームやサイト コンテンツなど) に移動すると、挿入されるはずのファイルがスタイル ライブラリからフェッチされないため、挿入されず、キャッチされない ReferenceError が発生します。スクリプトの関数の 1 つを呼び出そうとします。最も奇妙な部分は、最初にアクセスしたときにスクリプト ファイルを取得するページの機能に関係なく、Ctrl+F5 を使用してページを更新すると問題なくスクリプト ファイルが取得されることです。リンクから再びアクセスされるまで、スクリプトは保持されます。
私の問題の原因かもしれないと思って、 Sharepoint cachingを読みましたが、問題は、これらの記事のほとんどが、ファイルを更新するときにキャッシュに起因するエラーについて話しているのに、アクセスしようとしているだけであることです。
注意すべきことの 1 つは、制限があるため、スクリプト リンクのカスタム アクションをコードで追加していることです。この種の呼び出しが現在私のアプリでどのように見えるかの例を次に示します。
context.Load(context.Site.UserCustomActions);
context.ExecuteQuery();
customAction.Name = "MyScriptLink";
customAction.Location = "ScriptLink";
customAction.Sequence = 100;
customAction.ScriptSrc = "~SiteCollection/Style Library/MySite/MyScript.js";
customAction.Update();
context.ExecuteQuery();
それで、ここで何が起こっているのですか?特定のページにスクリプトが挿入されないのはなぜですか? これらのまったく同じページを更新すると、問題なくファイルを取得できるのはなぜですか?