根据条件使用jQuery更改“href”和“src”属性

时间:2014-08-14 07:32:50

标签: jquery

我有以下链接:

<script src="/WebResource.php?d=FViz" type="text/javascript"></script>
<script src="WebResource.php?d=FViz" type="text/javascript"></script>

<img src="/Images/top.png">
<img src="Images/top.png">

<link href="/Skins/style.css" rel="stylesheet" type="text/css">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>

我如何在所有“src”和“href”属性中插入属于“script”“link”和“img”标记链接开头的“http://example.com/”如果链接有不要以“http://”或“www。”开头。

所以最后的结果应该是这样的

<script src="http://example.com/WebResource.php?d=FViz" type="text/javascript"></script>
<script src="http://example.com/WebResource.php?d=FViz" type="text/javascript"></script>

<img src="http://example.com/Images/top.png">
<img src="http://example.com/Images/top.png">

<link href="http://example.com/Skins/style.css" rel="stylesheet" type="text/css">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>

我必须强调,必须在加载页面后在用户浏览器中使用jQuery,而不是在服务器端使用jQuery。

很抱歉,我没有任何基本示例。

2 个答案:

答案 0 :(得分:3)

仅供参考,此类URL修复通常在服务器端完成,因为客户端无法完全控制此类内容。

您无法使用客户端javascript / jQuery修改页面中的现有<script>标记。在您尝试修改它们时,它们已经被解析和加载。如果需要,您可以使用相应的<script>值插入新的src代码。

您可以使用jQuery修改图片src值,但我想知道是否有更好的方法可以解决您遇到的问题。


如果您真正想要做的是更改网页中相对URI的默认路径,那么您可以使用<base>部分中的<head>标记来更改所有内容非绝对URI使用不同的默认路径。

<base href="http://example.com">

使用jQuery,<img> src属性可以像这样修改:

$(document).ready(function() {
    $("img").each(function() {
        // get raw .src attribute
        var src = this.getAttribute("src");
        if (src.slice(0, 7) !== "http://") {
            // make sure there's a leading "/"
            if (src.charAt(0) !== "/") {
                src = "/" + src;
            }
            // add domain
            src = "http://example.com" + src;
        }
        this.src = src;
    });
});

由于脚本标记在您使用自己的脚本访问之前已经加载(或尝试加载),因此您可以使用脚本标记执行的唯一操作是创建具有所需路径的新脚本标记,然后重新插入它们。这可能会产生加载顺序问题,因为新脚本标记将异步加载。

答案 1 :(得分:0)

jQuery.each($("[src]"),function()
{
    if(($(this).attr("src").indexOf("http")>-1) || ($(this).attr("src").indexOf("www")>-1))
    { }
    else {
        $(this).attr('src',"http://www.example.com"+$(this).attr('src'));
    }
});