今天,在//server.tld/js/script.js
- 标签等中使用http://server.tld/js/script.js
代替特定于协议的script
是很常见的。
但我想提供一个没有任何网络服务器的静态html页面(即没有http://localhost:8080
)。
问题是浏览器将协议相关链接解释为file:///js/script.js
,我无法绕过这一点,因为它从外部服务器动态加载。
在这种特定情况下,脚本为http://connect.soundcloud.com/sdk.js
并在运行时加载//connect.soundcloud.com/soundmanager2/soundmanager2.js
在html页面中包含直接指向script
的{{1}}标记并不能解决问题,因为还存在其他一些依赖项。
也无法让网络服务器运行(例如http://connect.soundcloud.com/soundmanager2/soundmanager2.js
),因为它适用于不希望安装任何内容的客户端。
那么如何在html文件中定义procotol相对链接应该使用php -S localhost:8080
或http://
作为协议而不是https://
?
编辑:也许我用一个例子解释这个 在我的html页面中,我有一个脚本标记(我可以控制使用的协议)
file://
该脚本在dom中添加了另一个标记
<script src='http://example.org/some.js'></script>
如果我只是打开html文件<script src='//example.org/helper.js'></script>
,浏览器会认为它应该位于file:///.../file.html
之前,以便脚本file://
变为src
或类似。
并且不可能只遍历脚本标记并添加file://example.org/helper.js
,因为脚本(http://
)可能使用ajax。
修改: 如果他们使用协议相对网址,我认为没有办法为第三方脚本设置协议,因此我将这个问题留给那些在与第三方合作时可能遇到相同行为的人提醒脚本和静态html页面 如果Windows中预装的Web服务器就像在Linux的Python中那样会很好。