3

是否可以将url属性传递给动态查询字符串?例如url( ./SOME_IMAGE_GENERATOR?image=1 );在哪里image变化?

我需要通过 JS 设置这个属性:

$( "#elem" )[ 0 ].style.background = "url( ./renders/circuit.php?circuit=" + dirY + dirX + "&dims=1|1 )";

链接url指向一个文件,该文件生成并返回一个图像。图像生成正确,但未用作背景。

澄清

我要放入的图像尚不存在。它由页面生成和返回circuits.php,取决于参数。

如果图像存在,背景会很好地改变。我注意到,与更改标签的src属性不同img,虽然参数由浏览器创建请求,发送和接收标头和信息,background但不会。

我曾考虑向circuit.php生成器发送请求,让他将图像保存在服务器上,然后使用setTimeout更改背景,但我不能依赖特定的时间来生成。

那就是问题所在。现在,你们有任何想法如何超越这个吗?

4

3 回答 3

3

工作示例

我已经使用 Jsfiddle 和我自己的网站上保存的图像生成脚本复制了您的场景。

如您所见,确实可以使用生成的图像动态更改背景:http: //jsfiddle.net/DigitalBiscuits/Eh8yY/6/

调试你的代码

所以....你的有什么问题?首先,如果您使用的是 Firefox 或 Chrome,请使用开发人员工具检查发生了什么。确保控制台中没有显示任何 Javascript 错误。

然后我建议你检查你的 javascript 是否真的在选择元素,并且它能够改变背景(比如说静态图像)。隔离给您带来问题的代码并在一个新的空白页面中对其进行测试,有点像我在上面链接到您的 JSfiddle。

附带说明一下,您的 javascript 代码对我来说有点陌生。

代替:

$( "#elem" )[ 0 ].style.background = ...

尝试使用:

document.getElementById('myImg').style.background = ...

最后,确保您在生成图像的 php 脚本中设置了正确的标头,并且在设置标头之前没有发生任何输出。

于 2012-05-20T16:56:51.813 回答
2

你在使用 jQuery 吗?这应该很容易做到。

将生成的图片 url 存储在一个变量中,然后使用 jQuery 更改 CSS 背景图片的值,如下所示:

var imageUrl = "./renders/circuit.php?circuit=" + dirY + dirX + "&dims=1|1";
$('#myDiv').css('background-image', 'url(' + imageUrl + ')');

这是一个展示这个概念的jsfiddle。单击div以查看通过 JS 动态更改的背景图像。 http://jsfiddle.net/DigitalBiscuits/F3PUy/2/

于 2012-05-18T18:07:07.933 回答
1

是的,它可以使用 CSS 将动态图像设置为背景图像。

这与您如何将动态图像用于img元素没有什么不同。

于 2012-05-18T16:18:38.467 回答