Javascript 使用JQuery拦截HTTP事件
我有这个JQuery代码,但是我需要知道是否真正从所选标记执行URLJavascript 使用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 接下来我可能需要做的事情是
$("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生成的。