2013-05-26 5 views
0

Office365 용 클라이언트 측 스크립팅 만 사용하는 구성 요소를 구축 중입니다. 목록에서 몇 가지 값을 가져 와서 드롭 다운 목록에 표시합니다.클릭시 스크립트 태그 속성 업데이트

그런 다음 링크를 클릭하면 스크립트 태그의 ID와 SRC가 설정됩니다. 스크립트 태그가로드되고 다른 사이트의 위젯이 표시됩니다.

그러나이 기능은 처음으로 링크의 onclick 이벤트를 트리거 할 때만 작동합니다. 다음 번에이 작업을 시도하면 스크립트 태그가 더 이상 업데이트되지 않습니다.

처음 jquery가 스크립트 태그를 찾습니다. SRC 및 ID 속성이 올바르게 업데이트 된 배열이 [0] 배열에 있습니다.

두 번째로 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); 
    });  
}); 

답변

0

당신이 스크립트 ID를 설정하는 :

여기 코드의 var ScriptTagID = "WolframAlphaScript";

그래서 두 번째로,이 라인 반환 JQuery와 빈 객체 : 그러니까 기본적으로

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

, 스크립트 ID를 수정해서는 안됩니다.

대신 사용할 수 있습니다

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

는하지만이 점을 이해할 수 없다?!

+0

여분의 눈 쌍을 가져 주셔서 감사합니다. 그렇지 않으면 버그를 찾지 못했을 것입니다. 코드의 요점은 스크립트 태그의 URL과 ID를 업데이트하여 다른 사이트에서 위젯을 가져 오는 것입니다. – JurgenW