我有2个img标签,它们具有相同的src,"images/export.png"
。其中一个显示正确,而另一个没有。任何人都知道如何发生这种情况?
某些背景信息:
- 使用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问题而加剧。
答案 0 :(得分:1)
我通过改变
解决了这个问题Backbone.history.start({pushState:true,root:"/NewBizGenerator"});
到
Backbone.history.start({pushState:true,root:"/NewBizGenerator/"});
我猜没有结束斜杠,所有资源都试图转到localhost:8080
而不是localhost:8080/NewBizGenerator