Открыть новую веб-страницу с открытым в данный момент сайтом, используя JavaScript-букмарклет - PullRequest
1 голос
/ 20 мая 2019

Я пытаюсь создать букмарклет JavaScript. Обычно я сначала перехожу на site1.com, затем нажимаю на букмарклет, и он берет URL сайта site1.com и открывает site2.com/go.php?go=site1.com

Итак, JavaScript должен добавить site1.com к site2.com/go.php?go=, а затем открыть веб-страницу по адресу site2.com/go.php?go=site1.com

1 Ответ

1 голос
/ 02 июня 2019

Этот букмарклет сделает именно то, что вы просите:

javascript:window.location='http://site2.com/go.php?go='+escape(window.location.hostname);

Потенциальная проблема с этим букмарклетом в том, что он отправит вас на http://site2.com/go.php?go=site1.com независимо от того, прибываете ли вы с https://site1.com/secret.html?query=etc или http://site1.com. То есть, независимо от того, где вы находитесь на site1.com, когда нажимаете на букмарклет, он все равно отправит вас на http://site2.com/go.php?go=site1.com.


Так что я подозреваю, что вы, возможно, захотите вместо этого:

javascript:window.location='http://site2.com/go.php?go='+escape(window.location);

Это позволит строке запроса точно указывать, где вы были site1.com при нажатии на букмарклет, плюс она включает схему URI (части http:// или https:// адреса site1.com). Используя те же два примера соответственно, этот букмарклет отправит вас на http://site2.com/go.php?go=https://site1.com/secret.html?query=etc ¹ и http://site2.com/go.php?go=http://site1.com/


  1. Фактически он будет кодировать в процентах адрес site1.com и отправлять вас на http://site2.com/go.php?go=https%3A//site1.com/secret.html%3Fquery%3Detc, поскольку адрес site1.com содержит несколько символов , которые не передаются как фрагменты URI, если не закодированы .
  2. На самом деле http://site2.com/go.php?go=http%3A//site1.com/ по той же причине.
...