واجهت اليوم حاجة إلى استبدال بعض المعلمات في عنوان URL مع JavaScript.
نسخ رمز رمز على النحو التالي:
// تحليل URL
وظيفة parseurl (url) {
var a = document.createElement ('a') ؛
A.Href = url ؛
يعود {
المصدر: URL ،
البروتوكول: A.Protocol.replace (':' ، '') ،
المضيف: A.HostName ،
الميناء: A.Port ،
الاستعلام: A.Search ،
params: (function () {
var return = {} ،
seg = a.search.replace (/^/؟/، '،' ') .Split (' & ') ،
len = seg.length ، i = 0 ، s ؛
لـ (؛ i <len ؛ i ++) {
if (! seg [i]) {متابعة ؛}
s = seg [i] .split ('=') ؛
ret [s [0]] = s [1] ؛
}
العودة ret.
}) () ،،،
ملف: (A.PathName.match (/// ([^//؟#]+) $/i) || [، ''] [1] ،
التجزئة: A.Hash.Replace ('#' ، '') ،
المسار: A.PathName.replace (/^([^//])/، '/$ 1') ،
النسبية: (A.Href.Match (/tps؟: ////////////////////20/////20iship+(.+)/) || [، '] [1] ،،
الأجزاء: A.PathName.replace (/^/// ، '') .Split ('/')
} ؛
}
// استبدل قيمة المعلمة التي تحمل نفس الاسم في Myurl
دالة استبدال urlparams (myrl ، newparams) {
/*
لـ (var x in myrl.params) {
لـ (var y في newparams) {
if (x.toLowerCase () == y.tolowercase ()) {) {
myurl.params [x] = newParams [y] ؛
}
}
}
*/
لـ (var x in newparams) {
var hasmurlparams = false ؛
لـ (var y in myrl.params) {
if (x.toLowerCase () == y.tolowercase ()) {) {
myurl.params [y] = newParams [x] ؛
hasinmyurlparams = صحيح ؛
استراحة؛
}
}
// المعلمة التي تبين أنها تمت إضافتها
if (! hasinmyurlparams) {
myurl.params [x] = newParams [x] ؛
}
}
var _retult = myurl.protocol + ": //" + myurl.host + ":" + myurl.port + myurl.path + "؟" ؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛؛
لـ (var p في myurl.params) {
_result + = (p + "=" + myurl.params [p] + "&") ؛
}
if (_result.substr (_result.length -1) == "&") {{
_result = _result.substr (0 ، _result.length -1) ؛
}
ifrl.hash!
_result + = "#" + myurl.hash ؛
}
العودة _result ؛
}
// الإخراج المساعد
وظيفة W (str) {
document.write (str + "<br>") ؛
}
var myurl = parseurl ('http://abc.com:8080/dir/index.html؟id=255&m=hello#top') ؛) ؛) ؛
ث
ث
ث
W ("myurl.query =" + myurl.query) // =؟
W ("myurl.params =" + myurl.params) // = object = {id: 255 ، m: hello}
ث
W ("myurl.segments =" + myurl.segments) // = array = ['dir' ، 'index.html']]
ث
ث
W ("myurl.source =" + myurl.source) // = 'http://abc.com:8080/dir/index.html؟id=255&m=hello#top'
var _newurl = replisturlparams (myrl ، {id: 101 ، m: "world" ، page: 1 ، "page": 2}) ؛
W ("<br> عنوان URL الجديد هو:")
W (_newurl) ؛