Estoy tratando de crear un complemento/extensión de Firefox para agregar un parámetro al final de una URL de una página en particular y volver a cargar la página con la nueva URL con el parámetro agregado.

El problema con el siguiente código es que agrega el parámetro, pero sigue recargando la nueva página sin control.

URL inicial https://www.example.com/questions/foo/bar

paginado recargado con URL modificada https://www.example.com/foo/bar?abcd=1

guión.js

var url = window.location.href;    
if (url.indexOf('?') > -1){
   window.stop()
}else{
   url += '?abcd=1'
}
window.location.href = url; 

manifiesto.json

{

  "manifest_version": 2,
  "name": "some name",
  "version": "1.0",

  "description": "some description",

  "icons": {
    "48": "icons/explore-48.png"
  },

  "content_scripts": [
    {
      "matches": ["*://www.example.com/*"],
      "js": ["script.js"]
    }
  ]

}

Nota : probé algunos ejemplos encontrados para el mismo escenario de Stackoverflow

respuesta

JavaScript no espera ifa que se ejecute la declaración completa antes de continuar con lo que sigue, por lo que el valor de urlnunca cambia antes de que se vuelva a cargar la página. Para arreglar esto, simplemente acceda window.location.href = url;a su else, así:

var url = window.location.href;
    if (url.indexOf('?') > -1) {
        window.stop()
    } else {
        url += '?abcd=1'
        window.location.href = url;
    }