如何在javascript bookmarklet上替换encodedURLcomponent

如何在javascript bookmarklet上替换encodedURLcomponent,javascript,bookmarklet,Javascript,Bookmarklet,因此,基本上,当我运行这个函数时,如果我在url末尾附加了?element=value&element1=value2,我可以在网站的element字段中输入数据 但是如果我添加一个空格,例如:element=value+value2。空间在字段上进行了转置,而不是将其标识为空间 我尝试过使用%20将其转换为+,并且我尝试过使用。在许多地方替换,但它根本不起作用 javascript: function getUrlVars() { var vars = [], hash; var ha

因此,基本上,当我运行这个函数时,如果我在url末尾附加了
?element=value&element1=value2
,我可以在网站的element字段中输入数据

但是如果我添加一个空格,例如:
element=value+value2
。空间在字段上进行了转置,而不是将其标识为空间

我尝试过使用
%20
将其转换为+,并且我尝试过使用
。在许多地方替换
,但它根本不起作用

javascript: function getUrlVars() {
var vars = [],
hash;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for (var i = 0; i < hashes.length; i++) {
        hash = hashes[i].split('=');
        vars.push(hash[0]);
        vars[hash[0]] = hash[1];
    }
    return vars;
}
function ParamsIntoForms(get) {
    for (var i = 0; i < get.length; i++) {
        if (document.getElementsByName(get[i]).length != 0) {
            document.getElementsByName(get[i])[0].value = decodeURIComponent(get[get[i]]);
        }
    }
    return false;
}
var get = getUrlVars();
ParamsIntoForms(get);
javascript:function-getUrlVars(){
var vars=[],
搞砸
var hashes=window.location.href.slice(window.location.href.indexOf('?')+1).split('&');
for(var i=0;i
尝试以下方法:

function getUrlVars () {
    const searchString = window.location.search.substr(1);
    const paramPairs = searchString.split('&');
    const keyValues = {};
    paramPairs.forEach(paramPair => {
        const pair = paramPair.split('=');
        // You need to replace the + signs you are using as spaces with %20, which can be decoded properly.
        keyValues[decodeURIComponent(pair[0])] = decodeURIComponent(pair[1].replace(/\+/g, '%20'));
    })
    return keyValues;
}

function praseIntoForms(keyValues) {
    Object.keys(keyValues).forEach(key => {
        if (document.getElementsByName(key).length != 0) {
            // Only replaces the first element of this name, is this what you want?
            document.getElementsByName(key)[0].value = keyValues[key];
        }
    });
}

const urlValues = getUrlVars();
praseIntoForms(urlValues);


虽然我真的不明白你为什么要这么做。

不起作用。让我举个例子。假设你有一个url。www.youtube.com是的,所以如果你检查网页上的元素和搜索栏的名称,名称是“search\u bar”或任何正确的名称,那么如果你这样做www.youtube.com?search\u bar=Hello,然后运行bookmarklet,它会自动填充字段。现在,假设您想添加一个空间,url将如下所示:www.youtube.com?search_bar=Hello+world,但在搜索栏中,它看起来像Hello+world,而不是Hello-world。你自己试试看。复制代码并将其标记为书签,然后将代码放在url所在的位置