回答:
indexOf
代わりにhrefプロパティを追加してチェックする必要がありますcontains
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
if (window.location.href.indexOf("franky") > -1) {
alert("your url contains the name franky");
}
});
</script>
window.location.hash
なく調べる必要があるため、「車の購入」を見つけることができませんwindow.location.href
。OPの関数でこれらの値を交換するだけです。
.href.indexOf("franky")
値0を返す可能性があるため.href
です。もちろん、この場合、.href
通常は「http:」または「file:」のようにプロトコルで始まることはありません。それにもかかわらず、の結果と比較するときは、常に> -1、> = 0、または私の好みでは!==-1を使用する必要がありindexOf()
ます。
if (window.location.href.indexOf("franky") != -1)
それを行うでしょう。または、正規表現を使用することもできます。
if (/franky/.test(window.location.href))
そのようです:
<script type="text/javascript">
$(document).ready(function () {
if(window.location.href.indexOf("cart") > -1)
{
alert("your url contains the name franky");
}
});
</script>
window.location.href
はwindow.location
developer.mozilla.org/en-US/docs/Web/API/Window.location
if
ステートメントに別の条件を追加するだけです。両方が含まれていることを確認するには&&
、Javascriptの AND演算子を使用できますif( window.location.href.indexOf("cart") > -1 && window.location.href.indexOf("box") > -1 )
。1つまたは他の値があるかどうかを確認するには、2つのパイプ文字であるOR演算子を使用します||
if( window.location.href.indexOf("cart") > -1 || window.location.href.indexOf("box") > -1 )
window.location
文字列ではありませんが、toString()
メソッドがあります。したがって、次のように行うことができます。
(''+window.location).includes("franky")
または
window.location.toString().includes("franky")
Locationオブジェクトには、現在のURLを返すtoStringメソッドがあります。文字列をwindow.locationに割り当てることもできます。つまり、ほとんどの場合、文字列であるかのようにwindow.locationを操作できます。場合によっては、たとえばStringメソッドを呼び出す必要がある場合は、明示的にtoStringを呼び出す必要があります。
正規表現の方法:
var matches = !!location.href.match(/franky/); //a boolean value now
または、次のような簡単なステートメントで使用できます。
if (location.href.match(/franky/)) {
これを使用して、Webサイトがローカルで実行されているかサーバーで実行されているかをテストします。
location.href.match(/(192.168|localhost).*:1337/)
これにより、hrefにが含まれているか192.168
、localhost
ANDの後にが含まれているかがチェックされ:1337
ます。
ご覧のように、条件が少し複雑になると、正規表現を使用することは他のソリューションよりも優れています。
if(/franky/.test(location.href)) { /* regex matched */ }
マッチで何もしない場合に使用する方が少し簡潔に感じられます。
test
よりも明らかにきれいですmatch
。
これを試してください、それはより短く、正確に次のように機能しwindow.location.href
ます:
if (document.URL.indexOf("franky") > -1) { ... }
以前のURLを確認したい場合も:
if (document.referrer.indexOf("franky") > -1) { ... }
document.referrer
は質問とは完全に無関係です。
これを試して:
<script type="text/javascript">
$(document).ready
(
function ()
{
var regExp = /franky/g;
var testString = "something.com/frankyssssddsdfjsdflk?franky";//Inyour case it would be window.location;
if(regExp.test(testString)) // This doesn't work, any suggestions.
{
alert("your url contains the name franky");
}
}
);
</script>
Window.location.hrefを使用して、JavaScriptのURLを取得します。これは、ブラウザの現在のURLの場所を通知するプロパティです。プロパティを別のものに設定すると、ページがリダイレクトされます。
if (window.location.href.indexOf('franky') > -1) {
alert("your url contains the name franky");
}
あなたのjsファイルに入れてください
var url = window.location.href;
console.log(url);
console.log(~url.indexOf("#product-consulation"));
if (~url.indexOf("#product-consulation")) {
console.log('YES');
// $('html, body').animate({
// scrollTop: $('#header').offset().top - 80
// }, 1000);
} else {
console.log('NOPE');
}
~
ので調べました:「見つかった戻り値を真実に変換~
するトリックindexOf()
です(見つからないものを偽物として作成しています)。それ以外の場合は、数値を切り捨てるという副作用のために使用します...」 - stackoverflow.com/a/12299678/3917091
正規表現は、単語の境界\b
や類似のデバイスのため、多くの人にとってより最適です。単語の境界は、のいずれかが発生したときに0-9
、a-z
、A-Z
、_
上にあるその辺次の試合の場合、または英数字の文字結ぶ線または文字列末尾または先頭に。
if (location.href.match(/(?:\b|_)franky(?:\b|_)))
を使用すると、とりわけとのif(window.location.href.indexOf("sam")
一致が表示されます。正規表現なしでトマトと明日に一致します。flotsam
same
tom
大文字と小文字を区別するのは、を削除するのと同じくらい簡単i
です。
さらに、他のフィルターを追加するのは簡単です
if (location.href.match(/(?:\b|_)(?:franky|bob|billy|john|steve)(?:\b|_)/i))
について話しましょう(?:\b|_)
。RegExは通常、_
として定義するword character
ので、単語の境界は発生しません。これ(?:\b|_)
を処理するためにこれを使用します。文字列が見つかる\b
か_
、どちらの側にあるかを確認します。
他の言語は次のようなものを使用する必要があるかもしれません
if (location.href.match(/([^\wxxx]|^)(?:franky|bob|billy|john|steve)([^\wxxx]|$)/i))
//where xxx is a character representation (range or literal) of your language's alphanumeric characters.
これは言うよりも簡単です
var x = location.href // just used to shorten the code
x.indexOf("-sam-") || x.indexOf("-sam.") || x.indexOf(" sam,") || x.indexOf("/sam")...
// and other comparisons to see if the url ends with it
// more for other filters like frank and billy
他の言語の正規表現のフレーバーはサポートされて\p{L}
いますが、JavaScriptはサポートされていません。これにより、外来文字を検出するタスクがはるかに簡単になります。何かのようなもの[^\p{L}](filters|in|any|alphabet)[^\p{L}]
(?#comments)
やフリースペースの言語では# comments
。しかし、これは読みにくいものではありません。// JavaScriptで複雑な正規表現を使用すると、編集可能なコメント付きのコピーが残ります。
このスクリプトがあるとします
<div>
<p id="response"><p>
<script>
var query = document.location.href.substring(document.location.href.indexOf("?") + 1);
var text_input = query.split("&")[0].split("=")[1];
document.getElementById('response').innerHTML=text_input;
</script> </div>
そして、URLフォームは www.localhost.com/web_form_response.html?text_input=stack&over=flow
書かれたテキスト<p id="response">
はstack
indexof()メソッドでは大文字と小文字が区別されるため、文字列を小文字または大文字に変換することをお勧めします。これは、検索で大文字と小文字が区別されるマインドフルでない場合になります。したがって、大文字と小文字が区別されない検索では、次のようになります。
var string= location.href;
var convertedString= string.toLowerCase();
if(convertedString.indexOf(franky) != -1){
alert("url has franky");
}
else{
alert("url has no franky");
}
"window.location.contains is not a function"