2个图像具有相同的src,一个呈现,一个不呈现。怎么样?

时间:2016-02-15 03:10:14

标签: javascript html tomcat backbone.js path

我有2个img标签,它们具有相同的src,"images/export.png"。其中一个显示正确,而另一个没有。任何人都知道如何发生这种情况?

enter image description here

某些背景信息:

- 使用Backbone.js,启用pushState。因此,内部应用程序导航是通过“/ location”而不是哈希“#location”完成的。

-Context root是localhost:8080/NewBizGenerator

- 工作图像在index.html中硬编码,而破坏的图像通过javascript插入DOM。

- “新产品”标签目前是默认页面,因此localhost:8080/NewBizGenerator会调用localhost:8080/NewBizGenerator/NewProducts。我发现,当我转到localhost:8080/NewBizGenerator/NewProducts而不是localhost:8080/NewBizGenerator时,损坏的图像将会起作用,即使目标网页相同,localhost:8080/NewBizGenerator/index.html也是如此。这让我觉得这是一些本地/相对路径问题。

- 实际上,当网址为localhost:8080/NewBizGenerator时,每个脚本src都认为基础uri为localhost:8080。然而所有的j仍然运行,即使我打开localhost:8080/js/index.js它给了我404.这是真的,因为所有的js文件都在localhost:8080/NewBizGenerator/js之下。但那为什么js仍在执行?我已多次清除浏览器历史记录/缓存文件。当html doc位于localhost:8080时,为什么基本uri设置为localhost:8080/NewBizGenerator/index.html。基础uri不应该是localhost:8080/NewBizGenerator吗?

- 如果我右键单击“在新标签中查看图像”,则工作图像和损坏的图像都会找不到404。这是有道理的,因为图像路径是"localhost:8080/NewBizGenerator/images/export.png"并且img src尝试访问"localhost:8080/images/export.png".工作图像完全无效是没有意义的。

我不知道发生了什么,似乎是一些缓存/路径问题因localhost问题而加剧。

1 个答案:

答案 0 :(得分:1)

我通过改变

解决了这个问题
Backbone.history.start({pushState:true,root:"/NewBizGenerator"});

Backbone.history.start({pushState:true,root:"/NewBizGenerator/"});

我猜没有结束斜杠,所有资源都试图转到localhost:8080而不是localhost:8080/NewBizGenerator