我正在构建一个仅使用 Office365 客户端脚本的组件。它从列表中获取一些值并将它们显示在下拉列表中,到目前为止一切都很好。
然后,通过单击链接,脚本设置脚本标签的 ID 和 SRC。脚本标签加载并显示来自另一个站点的小部件。
但是,这仅在您第一次触发链接的 onclick 事件时有效。下次您尝试此操作时,脚本标签不再更新。
我注意到 jquery 第一次定位脚本标记时,它上面有一个 [0] 数组,其中包含正确更新的 SRC 和 ID 属性。
第二次触发 onclick 事件时,它确实找到了脚本标签(我猜),但标签没有相同的 [0] 数组,我没有看到浏览器调试器中的 SRC 和 ID 属性得到更新。
任何人都知道为什么该对象在第二次点击时不相似,或者如何让它在每次点击时更新脚本标签,而不仅仅是第一次?
所有帮助表示赞赏!
这是代码:
/* 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);
});
});