0

Office365 のクライアント側スクリプトのみを使用するコンポーネントを構築しています。リストからいくつかの値を取得し、ドロップダウン リストに表示します。

次に、リンクをクリックすると、スクリプトはスクリプト タグの ID と SRC を設定します。スクリプト タグが読み込まれ、別のサイトのウィジェットが表示されます。

ただし、これはリンクの onclick イベントを初めてトリガーしたときにのみ機能します。次回これを試すと、スクリプト タグは更新されなくなります。

jquery がスクリプト タグを初めて見つけたときに、正しく更新される SRC および ID 属性を持つ [0] 配列があることに気付きました。

onclick イベントが 2 回目にトリガーされると、スクリプト タグが検出されますが (推測)、タグに同じ [0] 配列がなく、SRC および ID 属性がブラウザー デバッガーで更新されることはありません。

2回目のクリックでオブジェクトが似ていない理由、または最初のクリックだけでなく、クリックごとにスクリプトタグを更新する方法を知っている人はいますか?

すべての助けに感謝します!

コードは次のとおりです。

/* triggered on click of a link */
function OnUserSelectionMade(selection)
{
    if (!((selection == null) || (selection == undefined)))
    {         
        var WolframWidgetURL = "https://www.wolframalpha.com/widget/widget.jsp?id=";
        var ScriptTagID = "WolframAlphaScript";

        var WidgetID = GetDDLSelection();

        WolframWidgetURL = WolframWidgetURL + WidgetID;
        ScriptTagID = ScriptTagID + WidgetID; 

        /* works only the first time you click */
        var aScriptTag = $('script[id*="WolframWidgetScriptTag"]');
        aScriptTag.attr("id", ScriptTagID);
        aScriptTag.attr("src", WolframWidgetURL);
    }
}

/* Gets the currently selected item in the dropdown's value */
function GetDDLSelection()
{
    var ddlWidgetSelector = $('#ddlWidgetSelector option:selected');

    return ddlWidgetSelector.val();
}


$(document).ready(function () {
    window.g_WidgetListItems = null;

    ExecuteOrDelayUntilScriptLoaded(FillDropDownList, "sp.js");

    // attach event for selecting an item from the drop down list
    $("#aWidgetSelectorLink").click(function () {
        OnUserSelectionMade(this);
    });    
});
4

1 に答える 1

0

次のようにスクリプト ID を設定しています。 var ScriptTagID = "WolframAlphaScript";

したがって、2 回目は、この行は jquery の空のオブジェクトを返します。

var aScriptTag = $('script[id*="WolframWidgetScriptTag"]');

したがって、基本的にスクリプト ID は変更しないでください。

代わりに使用できます:

var aScriptTag = $('script[id*="Wolfram"]');

しかし、私はこれのポイントを理解することはできません?!

于 2013-05-26T14:58:31.780 に答える