下划线模板在HTML中产生神秘的404错误
Underscore template in HTML generating mysterious 404 errors
好的,我有这个下划线模板(简化版),从_template.html.erb
渲染,在我的Rails应用程序,在页面的某个地方:
<script type="text/html" id="mytemplate">
<div class="foo">
<img src="{{= my_variable }}" />
</div>
</script>
然后我像这样渲染它,在其他地方,当需要的时候:
// change it to mustache-style because of defaults clashing with erb
_.templateSettings = {
interpolate: /'{'{'=(.+?)'}'}/g,
evaluate: /'{'{(.+?)'}'}/g
};
options = {
my_variable: '/foo/bar/baz.img'
}
compiled = _.template($("#mytemplate").html());
$(compiled(options)).appendTo("#wherever");
这,理论上应该工作得很好,它确实,除了像这样的错误开始弹出在服务器日志和其他地方,浏览器404的url,如:http://example.com/{{=%20my_variable%20}}
,或http://example.com/foo/{{=%20my_variable%20}}
。
现在,我的预感是它与事实有关,它是一个img
标签,不知何故浏览器试图从页面GET
它,即使它被包装在script
标签,但我不知道为什么在地球上。这是许多人推荐的在HTML中嵌入下划线模板的方法之一。我也不能把它归因于旧浏览器和/或机器人,因为服务器日志显示这些是真实的人使用最新的Chrome等。
编辑:经过更多的调查,1。它只发生在少数人(唯一的ip)身上。他们都在使用最新版本的Chrome浏览器。所以可能是分机出了问题?
任何想法?
您必须将type="text/html"
更改为不存在的type="x-template"
(或任何真正的东西)
如果缓存已清空,则此操作正常工作。
如果没有,那么您可以使用外部模板(您加载的文件)。但是如果你想保持它们内联,那么转义有问题的字符(使用内部JS字符编码)。这将被JS解析,但不会被HTML解析器捕获。
您可以使用此工具:http://mothereff.in/js-escapes(取消选中"仅转义非ASCII和不可打印的ASCII字符"框)
它可能是这样的:
<script type="text/html" id="mytemplate">
<div class="foo">
'x3Cimg src="{{= my_variable }}" />
</div>
</script>
相关文章:
- 生成pdf或其他非html文件时的错误处理
- 如何使用Node/Express显示有关特定错误的自定义html页面
- 回复'js'仅当请求有错误时(否则使用html)
- 我的html有一些错误
- 如何在不创建格式错误的HTML标记的情况下分解字符串
- "未捕获类型错误/丢弃意外“;因为一句台词而出现?(HTML w/<脚本>)
- 使用.format在一些HTML代码中插入文本,会出现错误(Python)
- HTML选择,在DOM中选择了正确的选项,但在firefox中显示了错误的项目
- Html抓取网站加载错误的J汤Java
- HTML上的Webpack JSX错误<来源>标签
- 未捕获的错误: [$injector:modulerr] http ..(使用纯 HTML)
- 为什么我的 JavaScript 会导致 HTML 验证错误
- ng-bind-html 工作,但抛出错误
- Javascript 将 HTML 写入页面错误
- HTML 无法识别我要求它运行的 javascript 文件,语法错误:意外的令牌“<”(匿名函数)script.js:
- 带有 CommonsChunkPlugin 的 Webpack 会导致 html 文件中的捆绑顺序错误
- JavaScript/HTML 错误的解决方案
- 如何检查 HTML 标记,然后在 jQuery 验证中添加错误
- 当输入值已更改时,html() 方法错误
- Wordpress/PHP/JQuery验证错误?HTML 5验证失败