使用JavaScript插入HTML Img标记时出现问题

使用JavaScript插入HTML Img标记时出现问题,javascript,python,html,flask,Javascript,Python,Html,Flask,我正在使用以下代码: var oDiv = document.createElement ("DIV"); oDiv.innerHTML='<img src="{{ url_for(\'static\', filename=\'images/bubble4.png\') }}">' var-oDiv=document.createElement(“DIV”); oDiv.innerHTML=“” 尝试将javascript文件中的图像插入html文件。如你们所见,我用的是烧瓶。i

我正在使用以下代码:

var oDiv = document.createElement ("DIV");
oDiv.innerHTML='<img src="{{ url_for(\'static\', filename=\'images/bubble4.png\') }}">'
var-oDiv=document.createElement(“DIV”);
oDiv.innerHTML=“”
尝试将javascript文件中的图像插入html文件。如你们所见,我用的是烧瓶。innerHtml似乎正在工作,因为断开的图像链接确实出现了。 我认为问题来自flask的url_中所有不同的双引号和单引号的语法,但我不知道如何正确地转义它们。如果我手动将img标记添加到我的HTML中,图像就会显示得很好


有什么想法吗?

模板标记不必担心在JavaScript中引用,因为它将在被解释为JavaScript之前被URL替换

换句话说,没有必要逃避这些引用:

oDiv.innerHTML = '<img src="{{ url_for('static', filename='images/bubble4.png') }}">';
那么,您是否已加载该javascript:

var bubble_img = $('body').data('bubble-img');
oDiv.innerHTML = '<img src="' + bubble_img + '">';
var bubble_img=$('body')。数据('bubble-img');
oDiv.innerHTML='';

模板标记{{…}不必担心在JavaScript中引用,因为它将在被解释为JavaScript之前被URL替换

换句话说,没有必要逃避这些引用:

oDiv.innerHTML = '<img src="{{ url_for('static', filename='images/bubble4.png') }}">';
那么,您是否已加载该javascript:

var bubble_img = $('body').data('bubble-img');
oDiv.innerHTML = '<img src="' + bubble_img + '">';
var bubble_img=$('body')。数据('bubble-img');
oDiv.innerHTML='';

jinja部分在服务器上执行,结果发送到客户端,然后客户端将执行(或不执行…)javascript代码。鉴于jinja部分不需要任何转义(但您需要确保结果代码被正确引用/转义)。

jinja部分在服务器上执行,结果被发送到客户端,然后客户端将执行(或不执行…)javascript代码。看,jinja部分不需要任何转义(但您需要确保生成的代码被正确引用/转义)。

我认为这是有道理的,但当我停止转义并按照您的建议使用代码时,损坏的IMG就会消失。然后看看服务器生成的确切输出是什么。使用浏览器的“查看源”选项(Chrome:view->Developer->view source)查看生成的内容。好的,我想我们正在接近损坏图像的URL源:%7B%7B%20url_for('static',%20filename='images/bubble4.png'))%20%7D%7D,而我手动添加的图像上的url看起来更漂亮:/static/images/bubble4.png,因此格式中的某些内容似乎仍处于关闭状态。这意味着根本没有执行Jinja2代码;这就是
{..}
url-escape。你确定你的文件不是静态文件吗?我认为这是有道理的,但当我停止转义引号并按照你的建议使用代码时,损坏的IMG就会消失。然后看看服务器产生的确切输出是什么。使用浏览器的“查看源”选项(Chrome:view->Developer->view source)查看生成的内容。好的,我想我们正在接近损坏图像的URL源:%7B%7B%20url_for('static',%20filename='images/bubble4.png'))%20%7D%7D,而我手动添加的图像上的url看起来更漂亮:/static/images/bubble4.png,因此格式中的某些内容似乎仍处于关闭状态。这意味着根本没有执行Jinja2代码;这是
{..}
url-escape。您确定您的文件不是静态文件吗?您能否澄清“需要确保生成的代码被转义”是什么意思?(因为我觉得我没有这么做…)你能澄清一下“需要确保结果代码被转义”是什么意思吗?(因为我觉得我没有这样做…)我可以通过不使用Jinja模板和只输入相对url来避免问题,但我希望能够使用Jinja。我可以通过不使用Jinja模板和只输入相对url来避免问题,但我希望能够使用Jinja。