开发者

Get the current url but without the http:// part bookmarklet!

开发者 https://www.devze.com 2022-12-11 07:59 出处:网络
Guys I have a question, hoping you can help me out with this one. I have a bookmarklet; javascript:q=(document.location.href);void(open(\'h开发者_Python百科ttp://other.example.com/search.php?search=\

Guys I have a question, hoping you can help me out with this one. I have a bookmarklet;

javascript:q=(document.location.href);void(open('h开发者_Python百科ttp://other.example.com/search.php?search='+location.href,'_self ','resizable,location,menubar,toolbar,scrollbars,status'));

which takes URL of the current webpage and search for it in another website. When I use this bookmarklet it takes the whole URL including http:// and searches for it. But now I would like to change this bookmarklet so it will take only the www.example.com or just example.com (without http://) and search for this url. Is it possible to do this and can you please help me with this one?

Thank you!


JavaScript can access the current URL in parts. For this URL:

http://css-tricks.com/example/index.html

window.location.protocol = "http"

window.location.host = "css-tricks.com"

window.location.pathname = "/example/index.html"

please check: http://css-tricks.com/snippets/javascript/get-url-and-url-parts-in-javascript/


This should do it

location.href.replace(/https?:\/\//i, "")


Use document.location.host instead of document.location.href. That contains only the host name and not the full URL.


Use the URL api

A modern way to get a part of the URL can be to make a URL object from the url that you are given.

const { hostname } = new URL('https://www.some-site.com/test'); // www.some-site.com 

You can of course just pass window location or any other url as an argument to the URL constructor.

Like this

const { hostname } = new URL(document.location.href);


Do you have control over website.com other.example.com? This should probably be done on the server side.

In which case:

preg_replace("/^https?:\/\/(.+)$/i","\\1", $url);

should work. Or, you could use str_replace(...), but be aware that that might strip 'http://' from somewhere inside the URL:

str_replace(array('http://','https://'), '', $url);

EDIT: or, if you just want the host name, you could try parse_url(...)?


Using javascript replace via regex matching:

javascript:q=(document.location.href.replace(/(https?|file):\/\//,''));void(open('http://website.com/search.php?search='+q,'_self ','resizable,location,menubar,toolbar,scrollbars,status'));

Replace (https?|file) with your choice, e.g. ftp, gopher, telnet etc.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号