我有這個Window Store應用程序,我想動態地添加一些標記,我的問題可以歸結爲:jQuery.append,類型輸入和Windows應用商店應用程序(HTML/CSS/JS)
工作
$('.some-element').append('<input type="radio"><label>Test</label>');
不工作
$('.some-element').append('<input type="radio" name="test"><label>Test</label>);
的Visual Studio告訴我說:
個JavaScript runtime error: Unable to add dynamic content. A script attempted to inject dynamic content, or elements previously modified dynamically, that might be unsafe. For example, using the innerHTML property to add script or malformed HTML will generate this exception. Use the toStaticHTML method to filter dynamic content, or explicitly create elements and attributes with a method such as createElement.
並指向行jQuery的追加執行:
append: function() {
return this.domManip(arguments, true, function(elem) {
if (this.nodeType === 1 || this.nodeType === 11) {
this.appendChild(elem); // Here!
}
});
}
有誰知道那裏有解決的辦法? (我需要jQuery,因爲我想使用JsRender作爲我的模板引擎)。
您好,感謝您的回答。在我的情況下,主要問題是我想使用JsRender進行模板化,並使用jQuery。所以我不直接使用jQuery,所以toStaticHTML並不是真正的選擇。我可以使用WinJS內置的模板,但這只是一種無法使用Windows Store應用程序的常規Web技術棧的觀點(我認爲) - 但是我想我會堅持使用它,或者只是輸入手動標記。再次感謝您的回覆,這非常有用 – mat
您還有更多的選擇,您仍然可以繼續使用JsRender,儘管我在這裏猜測,因爲我不知道JsRender。首先,編輯您的渲染模板,以便不包括被視爲不安全的事物。另一種方法是將調用封裝到JMSRender的execUnsafeLocalFunction方法中 - 這將關閉對該調用堆棧持續時間的安全檢查。雖然如果JsRender稍後進行模板渲染(從綁定更新時,knockout.js存在此問題),但您將無法在不編輯源代碼的情況下使用execUnsafeLocalFunction。 –
嗯,我真的不知道哪些事情被認爲是不安全的(所以接下來會遇到什麼問題?),在我的具體情況下,「名稱」屬性位於單選按鈕上,因爲我需要一個無線電組。如果我不能使用它,我必須自己編寫瀏覽器給出的功能(我並不真正感興趣)。 – mat