我有一个插件在我客户的网站上运行。该插件位于http://mycompany.com/Tool.js,需要提取一些图片。问题是,javascript似乎试图从客户的网站上提取图像,而不是从我自己的网站上提取图像。这是JS:
button.style.cssText = 'position:absolute;top:-20px;right:-20px;background-image:url(/Resource/Button.png);
在上面的JS中,检索URL是CUSTOMER.com/Resource/Button.png (插件运行的网站),而不是我的网站mycompany.com/Resource/Button.png
请注意,我不能使用绝对路径,因为它们会变成环境之间的痛苦(测试/产品),也因为我的图像检索必须使用基于客户端环境的http / https(否则如果使用http,则可能会出错) https网站)。
答案 0 :(得分:1)
只需将其替换为
background-image:url(http://mycompany.com/Resource/Button.png);
答案 1 :(得分:1)
而不是使用Javascript或其他任何内容,您实际上只能在样式表中的URL之前使用//
,它将使用http
或https
,具体取决于客户端访问网站的方式。将样式表链接到页面时,可以在HTML页面上执行相同的操作。所以你的HTML页面将是:
<link href="//mycompany.com/stylesheet" />
在样式表中,您可以
background-image:url(//mycompany.com/Resource/Button.png);
修改强>
我忘了提到在将javascript文件附加到页面时也可以这样做。
例如:<script type="text/javascript" src="//mycompany.com/javascript"></script>
答案 2 :(得分:0)
应该包括绝对路径!!
switch (window.location.protocol) {
case "http:":
button.style.cssText = 'position:absolute;top:-20px;right:-20px;background-image:url(http://yourcompany.com/Resource/Button.png);break;
case "https:":
button.style.cssText = 'position:absolute;top:-20px;right:-20px;background-image:url(https://yourcompany.com/Resource/Button.png);break;
}
答案 3 :(得分:0)
javascript将在其运行位置的上下文中运行,而不是从其下载的位置运行。如果资源URL不是绝对的,则将假定该域是您的浏览器当前正在访问的域。
您需要一个绝对网址。例如。 http://mycompany.com/Resource/Button.png