当PHP类动态调整图像大小时,Zurb Foundation中的Interchange.js出现问题


Trouble with Interchange.js in Zurb Foundation when images are being dynamically resized by PHP class

我正在使用Zurb Foundation构建一个响应式网站。

我有一个PHP脚本,如果在URL中附加一个具有新维度的查询字符串,它将使用gdlib调整图像大小并缓存图像。例如,将图像调整为300像素宽:

http://www.mydomain.com/images.php?imgfile=path/to/picture1.jpg&w=300

我还使用了一些HTACCESS重写规则来使这个URL美观,并避免出现查询字符串。所以这个URL给出了与上面相同的结果:

http://www.mydomain.com/img/300w/path/to/picture1.jpg

PHP文件执行一些简单的算术来按宽度或高度进行约束,检查调整大小的版本是否已在缓存中,如果已调整大小则输出,如果未调整大小,则调整图像大小,使用imagejpeg保存,并将其与头一起输出("内容类型:image/jpeg");

我也在使用Zurb Foundation,并希望使用交换javascript,如:

<img src="http://www.mydomain.com/img/300w/path/to/picture1.jpg" 
data-interchange="[http://www.mydomain.com/img/300w/path/to/picture1.jpg, (default)],
[http://www.mydomain.com/path/to/picture1.jpg, (medium)]">

然而,这似乎并不奏效。两个断点都只显示300px。经过大量测试,很明显,只有src属性中的内容才被接受。通过调整大小脚本的图像不起作用。这是真的,即使它应该使用作为全尺寸图像的直接路径的介质图像。

我试着调试交换javascript,但对javascript不太熟练。

如有任何帮助或建议,我们将不胜感激。一定有人试图在响应网站上使用exchange.js使用PHP动态调整大小的图像。

不需要调试交换,它运行得很好。

首先,您是否在interchange.js(dependency)之前包含了foudation.js文件?

调试技巧:尝试使用默认/中/小,并使用不同的图像(例如:不同颜色的矩形)来快速注意变化。

此外,在您的示例中,只有一个路径(见下文),并且您有一个"默认"命名查询。两次加载同一个图像有什么意义?你可能希望你的默认尺寸是src=",然后你的(通常)更大的尺寸?

交换所做的是让src"(ex:small.jpg)"像往常一样加载(因此它在没有启用js的情况下显示),然后根据命名的查询/媒体查询加载更大的图像。所以,也许你可以在上传时生成所有的图像大小(不需要检查大小是否存在)。至少,这是我使用wordpress的方式。

<img src="http://www.mydomain.com/img/default-size/300w/path/to/picture1-small.jpg"
data-interchange="[http://www.mydomain.com/img/medium-size/800w/path/to/picture1-medium-sized.jpg, (medium)],
[http://www.mydomain.com/img/large-size/1200w/path/to/picture1-large-sized.jpg, (large)]">

正如我在Zurb Foundation Github repo问题上看到的那样,包含参数的url及其正则表达式可能存在问题