Я пытаюсь создать букмарклет 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
.
Этот букмарклет сделает именно то, о чем вы просите:
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/
.²
site1.com
и отправлять вас на http://site2.com/go.php?go=https%3A//site1.com/secret.html%3Fquery%3Detc
, потому что адрес site1.com
содержит несколько символы, которые не подходят для использования в качестве фрагментов URI, если они не закодированы.http://site2.com/go.php?go=http%3A//site1.com/
по той же причине.Спасибо, это именно то, что мне было нужно.
вам может понадобиться вставить ссылку на site1, так как браузер будет блокировать вызовы window.open() вне вкладки (например, букмарклеты). тогда вы просто проходите
location.host