请问在通过 jquery get 加载的页面内如何获取当前的 url 地址?

我有个页面弹窗,是在 index.html 页面加载的 js 代码里通过 jquery get 方法实现的,大概代码如下:

$.get('./addOrEdit.html?id=100', function (data) {

var info = data, oppoBox = $('#oppoBox'), title = $.trim(obj.attr('atitle'));

if (info.length) {

$('#oppoInfo').html(info);

$('#oppoBg').css({'height': $(document).outerHeight() + 'px'});

oppoBox.css({'width': $(document).outerWidth() * 11 / 18 + 'px'});

var top = $(window).height() / 18, height = $(window).height() - top * 2;

oppoBox.css({

'left': ($(document).outerWidth() - oppoBox.outerWidth()) / 2 + 'px',

'top': top + 'px',

'height': height + 'px',

'overflow': 'hidden'

});

$('#oppoTitle').text(title);

$('#oppoInfo').css({

'height': height - parseInt($('#toolBar').css('lineHeight')) - parseInt($('#oppoInfo').css('paddingTop')) - parseInt($('#oppoInfo').css('paddingBottom')) + 'px'

});

$('#oppoBg,#oppoBox').removeClass('hide');

}

});

现在我期望是在 addOrEdit.html?id=100 页面加载的 js 文件获取到当前的 id 的参数值,但是现在获取到的当前页面地址一直是 index.html,请问大神这个该怎么办?小弟跪谢。

请大佬不要告诉直接写死 100 就行了,我这里为了方便看直接写成了 addOrEdit.html?id=100,实际的页面这个 url 是个变量表示的。


回答:

addOrEdit.html?id=100 页面加载的 js 文件为什么能够执行,是因为调用了 html() 方法,该方法底层是使用 window.eval() 来执行脚本的,window.eval 是一种 eval 的间接调用方式,会在全局环境下执行代码,也就是 js 文件执行的环境就是当前页面 index.html 下的全局环境。所以只需要把 id 值存储为一个全局变量就可以被获取了。


回答:

你是怎么获取的id参数值,能给出具体代码吗


回答:

将页面地址存放在url的hash上面。类似路由的做法,但不能同时设置多个hash,不然找不到路径。

let htmlUrl = './addOrEdit.html?id=100';

util.setUrlHash(htmlUrl);

$.get(htmlUrl, function (data) {

var info = data, oppoBox = $('#oppoBox'), title = $.trim(obj.attr('atitle'));

if (info.length) {

$('#oppoInfo').html(info);

}

});

addOrEdit.html 优先获取hash的参数,如果没有hash,则获取url的参数。

let hash = util.getUrlHash();

let locationObj = util.getLocation(hash, location);

let params = util.getUrlParams(locationObj.search);

let id = params.id;

console.log(params.id);

const util = {

/**

* 获取当前url

* @returns {URL}

* @param href

*/

getLocation: (url = window.location, base = window.origin) => {

// 把键值对列表转换为一个对象

return new URL(url, base);

},

/**

* 设置当前url 哈希

* @returns {string}

*/

setUrlHash: (hash = window.location.hash) => {

return window.location.hash = hash;

},

/**

* 获取当前url 哈希

* @returns {string}

*/

getUrlHash: (hash = window.location.hash) => {

return hash.replace('#', '');

},

/**

* 获取当前url参数

* @returns {{[p: string]: string}}

* @param search

*/

getUrlParams: (search = window.location.search) => {

// 创建一个URLSearchParams实例

const urlSearchParams = new URLSearchParams(search);

// 把键值对列表转换为一个对象

return Object.fromEntries(urlSearchParams.entries());

},

/**

* 设置当前url参数

* @returns {{[p: string]: string}}

* @param search

*/

setUrlParams: (search = window.location.search) => {

return window.location.search = search;

},

/**

* 对象转url参数

* @param name

* @returns {{[p: string]: string}}

*/

toUrlParams: (obj = {}) => {

// 创建一个URLSearchParams实例

var searchParams = new URLSearchParams();

// 把对象转换为一个url参数

Object.entries(obj).forEach(param => searchParams.append(...param));

return searchParams.toString();

}

}

JS API 可看具体兼容性要求
https://developer.mozilla.org/zh-CN/docs/Web/API/URL

https://developer.mozilla.org/zh-CN/docs/Web/API/URLSearchParams

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Refer...

以上是 请问在通过 jquery get 加载的页面内如何获取当前的 url 地址? 的全部内容, 来源链接: utcz.com/p/935319.html

回到顶部