Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用jQuery重写HTML文件中的域(或IP地址)_Jquery - Fatal编程技术网

使用jQuery重写HTML文件中的域(或IP地址)

使用jQuery重写HTML文件中的域(或IP地址),jquery,Jquery,我目前正在使用jQuery来加载()一个第三方HTML文件,并将其插入当前HTML页面的DIV中 $("#external-page").load(URL, function() { injectDataInPage(); doOtherStuffInPage(); }); 这很有效。主要的问题是,他们在HTML中添加了大量代码(即:发出服务器请求和从另一台服务器加载的资源的按钮等) 如果他们只为他们的请求使用了路径,那么这是可以的,但不幸的是,他们指定了域,有时还指定了IP地址

我目前正在使用jQuery来
加载()
一个第三方HTML文件,并将其插入当前HTML页面的DIV中

$("#external-page").load(URL, function() {
   injectDataInPage();
   doOtherStuffInPage();
});
这很有效。主要的问题是,他们在HTML中添加了大量代码(即:发出服务器请求和从另一台服务器加载的资源的按钮等)

如果他们只为他们的请求使用了路径,那么这是可以的,但不幸的是,他们指定了域,有时还指定了IP地址

我想替换所有硬编码的域和IP地址,以指向我自己的服务器

例如:

<a href='http://external.com/some/path/of/service'>Click here</a>

<img src='http://10.2.3.4/some/path/to/image.png'>

将重新映射到:

<a href='http://my.domain.com/some/path/of/service'>Click here</a>

<img src='http://my.domain.com/some/path/to/image.png'>


我知道您可能可以使用IIS插件或Node.js或其他东西来完成这项工作,但是否可以使用jQuery在客户机上实际完成这项工作?在将页面添加到DOM之后,或者可能在将其注入到DIV之前。

加载完成后插入它

$('a[href]').each(function(){
    $(this).attr('href', $(this).attr('href').replace("http://external.com", "http://my.domain.com");
});

$('img[src]').each(function(){
    $(this).attr('src', $(this).attr('src').replace("http://10.2.3.4", "http://my.domain.com");
});

您可以使用一些div选择器在
'a[href]'
前面加上前缀:
'.mydiv a[href]'
,以防止监视所有元素。

加载完成后插入它

$('a[href]').each(function(){
    $(this).attr('href', $(this).attr('href').replace("http://external.com", "http://my.domain.com");
});

$('img[src]').each(function(){
    $(this).attr('src', $(this).attr('src').replace("http://10.2.3.4", "http://my.domain.com");
});

您可以使用一些div选择器在
'a[href]'
前面加上前缀:
'.mydiv a[href]'
,以防止查看所有元素。

您可能还会发现类似URI.js的内容很有用。例如,您可以将replace函数与它们的函数一起使用,以使所有URL都是相对的

例如:

$("#external-page").load(URL, function() {
    injectDataInPage();

    $("#external-page img").each(function(i, img){
        var src = $(img).attr('src');
        $(img).attr('src', new URI(src).resource());
    }); 

    $("#external-page a:link").each(function(i, link){
        var href = $(link).attr('href');
        $(link).attr('href', new URI(href).resource());
    }); 

    doOtherStuffInPage();
});

诚然,这是未经测试的,但想法应该是显而易见的。

您也可能会发现类似URI.js的东西很有用。例如,您可以将replace函数与它们的函数一起使用,以使所有URL都是相对的

例如:

$("#external-page").load(URL, function() {
    injectDataInPage();

    $("#external-page img").each(function(i, img){
        var src = $(img).attr('src');
        $(img).attr('src', new URI(src).resource());
    }); 

    $("#external-page a:link").each(function(i, link){
        var href = $(link).attr('href');
        $(link).attr('href', new URI(href).resource());
    }); 

    doOtherStuffInPage();
});

当然,这是未经测试的,但想法应该是显而易见的。

或者在注入DOM之前在html中替换它:
returnedHtml.replace(“from”,“to”)
。为什么你认为你需要node.js呢?我已经尝试了
html.replace(“from”,“to”)
,但是那完全把一切都搞糟了。我将重新审视这个想法,看看为什么它不起作用。谢谢我之所以考虑使用Node.js,唯一的原因就是我知道这是可以做到的。但除此之外,第三方还提供了其他更复杂的API,这是毫无意义的。使用Node.js,我可以拥有更多的控制权,并为这些API创建一个“适配器”。但是如果我可以完全避免Node.js,那就更好了。谢谢你的建议,我会尝试一些方法,看看效果如何。或者在注入DOM之前,在html中替换它:
returnedHtml.replace(“from”,“to”)
。为什么你认为你需要node.js呢?我已经尝试了
html.replace(“from”,“to”)
,但是那完全把一切都搞糟了。我将重新审视这个想法,看看为什么它不起作用。谢谢我之所以考虑使用Node.js,唯一的原因就是我知道这是可以做到的。但除此之外,第三方还提供了其他更复杂的API,这是毫无意义的。使用Node.js,我可以拥有更多的控制权,并为这些API创建一个“适配器”。但是如果我可以完全避免Node.js,那就更好了。谢谢你的建议,我会尝试一些事情,看看效果如何。谢谢你的建议,我会尝试一些事情,看看效果如何。谢谢你的建议,我会尝试一些事情,看看效果如何。