Javascript 使用JQuery拦截HTTP事件

Javascript 使用JQuery拦截HTTP事件,javascript,jquery,Javascript,Jquery,我有这个JQuery代码,但是我需要知道是否真正从所选标记执行URL $("link, script, style, a, img").each(function () { $(this).load(function () { // get the URL and log it console.log("Intercepted HTTP Event"); }); }); 我需要做的第一件事是在加载过程中获取实际的URL 接下来我可能需要做的事情是

我有这个JQuery代码,但是我需要知道是否真正从所选标记执行URL

$("link, script, style, a, img").each(function () {
    $(this).load(function () {
        // get the URL and log it
        console.log("Intercepted HTTP Event");
    });
});
我需要做的第一件事是在加载过程中获取实际的URL

接下来我可能需要做的事情是在加载事件发生之前实际捕获,例如在加载图像或链接之前。此外,我需要修改将要执行的事件的URL,例如,
img
标记有
src=“/somewhere/image.png”
我的意思是,这将导致
GET/somewhere/image.png
我可能需要将其更改为
GET/otherplace/image.png

有没有办法实现这些目标?

.attr('src'))

$(this).load()将在加载元素内容后激发。因此,您可以通过执行
$(this).attr(“src”)
$(this).attr(“href”)
来获取URL,但现在阻止HTTP请求发出已经太晚了


另外,在现代浏览器中,JavaScript无法阻止首先加载资产。充其量,您可以在页面加载后通过更改
src
属性来更改图像和样式表。如果执行此操作,请确保
$(this).load()
不会进入无限循环。(
链接不是什么问题。没有加载任何内容,所以只需更改
href
属性。)

解决此问题的一种方法是在外部资源的源中使用一些虚拟链接/隐藏控件,一旦页面加载,您将通过所有此类控件,然后创建相应的html元素,更新src属性,然后将其附加到dom中

虚拟控件:

<input type="hidden" source="/my/source/a.jpg" nodeType="img" class="specialControls"/>
<input type="hidden" source="/my/source/1.js" nodeType="script" class="specialControls" />

还有javascript

$(document).ready(function()
{

    $(".specialControls").each(function(){
        var elementType=$(this).attr("nodeType");
        $('<'+elementType+'/>').attr('src', $(this).attr("source"))
                           .insertAfter($(this))

    });

});
$(文档).ready(函数()
{
$(“.specialControls”)。每个(函数(){
var elementType=$(this.attr(“nodeType”);
$('').attr('src',$(this.attr(“source”))
.insertAfter($(本))
});
});

希望这有帮助。

一个问题,为什么不使用mod_rewrite?主机限制?不是真的,我没有重写到特定的代理。在服务器端执行任何操作之前,我需要检查页面在客户端中的工作方式……然后在开发机器中使用mod_rewrite。第一部分很难实现(跟踪所有加载事件),第二部分不可能实现(替换URL),感谢您的回答,我需要捕获事件的原因是,像GET/something.png这样的HTTP事件是由页面上的另一个javascript生成的。