我的问题与发布here的问题几乎相似。我正在从包含第三方脚本的数据库加载HTML内容。我发现Durandal没有加载该脚本,或者视图不会组成该元素。我的html内容(来自第三方)看起来:
<p id="oilChart"><script src="http://www.oil-price.net/TABLE2/gen.php?lang=en" type="text/javascript">
</script>
<noscript> &amp;amp;amp;lt;a href="http://www.oil- price.net/dashboard.php?lang=en#TABLE2" mce_href="http://www.oil-price.net/dashboard.php?lang=en#TABLE2"&amp;amp;amp;gt;To get the oil price, please enable Javascript.&amp;amp;amp;lt;/a&amp;amp;amp;gt;&amp;amp;amp;lt;br /&amp;amp;amp;gt; </noscript>
</p>
我在main.js中引用了所有其他脚本。我试图以这种方式引用它,然后使用durandal的 compositionComplete 来链接我在内容中指定的id。那没起效。有没有另一种方式来看待它并做到这一点。谢谢你提前帮忙。
答案 0 :(得分:2)
正如您所指出的,杜兰达将忽略视图中的script
标记。它们仅从 index.html (或其等效物)加载。
您是否能够提前引用脚本(和noscript),将它们放在 index.html 文件中?换句话说,他们有动态加载吗?
旁注:你是什么意思&#34;所有我的其他脚本都在main.js中被引用&#34;?你的意思是它们是RequireJS的路径配置吗?或者您的意思是说它们是在 index.html 文件(或其等价物)中引用的?
答案 1 :(得分:1)
我进一步调查了OP提出的问题的答案。
我采取了以下步骤:
false
禁用绑定,true
启用绑定。这允许我使用compositionComplete
。这是我在控制台中获得的屏幕截图:
现在,对SO的搜索产生了这个post。基本上,如果此脚本使用document.write
或其等效脚本,则无法正常工作。
我会回到我最初的建议,即点击网络服务以显示原油数据,而不是试图合并第三方JavaScript,就像他们所说的那样。
答案 2 :(得分:0)
您可以使用knockout custom bindings:
ko.bindingHandlers.oilPrice = {
update: function( element, valueAccessor, allBindingsAccessor, viewModel, bindingContext){
$(element).html('<script src="http://www.oil-price.net/TABLE2/gen.php?lang=en" type="text/javascript"></script><noscript> &amp;amp;amp;lt;a href="http://www.oil- price.net/dashboard.php?lang=en#TABLE2" mce_href="http://www.oil-price.net/dashboard.php?lang=en#TABLE2"&amp;amp;amp;gt;To get the oil price, please enable Javascript.&amp;amp;amp;lt;/a&amp;amp;amp;gt;&amp;amp;amp;lt;br /&amp;amp;amp;gt; </noscript>');
}
};
在你的html中使用它:
<p><span data-bind="oilPrice"></span>
<强>更新强> 如果你使用knockout 2.2自定义绑定必须包含值:
<p><span data-bind="oilPrice:'value'"></span>
for knockout version 3.2:
<p><span data-bind="oilPrice"></span>
你的脚本呈现:
答案 3 :(得分:0)
经过大量研究后,我终于找到了答案。我所要做的就是使用加载我脚本的iframe。我取代了这个:
<p id="oilChart"><script src="http://www.oil-price.net/TABLE2/gen.php?lang=en" type="text/javascript"></script></p>
使用:
<iframe style ="border: none;height: 235px" srcdoc="<html lang='en'><body><script src='http://www.oil-price.net/TABLE2/gen.php?lang=en'></script></body></html>"><iframe>
感谢所有想法。了解了很多 - 从使用异步插件到自定义Ko处理程序的可能性。