JavaScriptを使用して特定のブラウザとモバイルでCSSセレクタを作成しようとしています。これはすでに動作しているメソッドです:JavaScriptを使用してCSSセレクタを作成する
// CHECK BROWSER AND SET AS CSS METHOD
function getBrowserName() {
var name = "Unknown";
if(navigator.userAgent.indexOf("MSIE")!=-1){
name = "msie";
} if(navigator.userAgent.indexOf("Trident")!=-1){
name = "msie";
} if(navigator.userAgent.indexOf("Edge")!=-1){
name = "msie";
} else if(navigator.userAgent.indexOf("Firefox")!=-1){
name = "firefox";
} else if(navigator.userAgent.indexOf(" OPR/")>=0){
name = "opera";
} else if(navigator.userAgent.indexOf("Chrome") != -1){
name = "chrome";
} else if(navigator.userAgent.indexOf("Safari")!=-1){
name = "safari";
}
return name;
}
if (getBrowserName() != "Unknown"){
document.getElementsByTagName('html')[0].className += "is-" + getBrowserName(name);
}
.is-(browser-name element-selector { css }
を呼び出すことで素晴らしい結果が得られます。しかし、私はこれをモバイル用に動作させることはできません。ここに私のコードは、私がすでに動作しているjQueryを使ってif (mobile)
セクションの外にすべてのものを使用してきたが、私は通常のCSSとJavaScriptを使用して、このプロセスは少し速くしたいと思います...
var mobile = (/iphone|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
if (mobile) {
document.getElementsByTagName('html')[0].className += "is-mobile";
}
です。私は作業用のコードスニペットをインクルードしますが、現在のコードは特定のブラウザを使用しているユーザーに依存しているので、明らかに動作しません...私は読んでほしいと思うサンプルを含めました。
このコードがさまざまなブラウザセクションで動作するが、モバイルでは動作しない理由を知っている人はいますか?助けてくれてありがとう!最低で
// WORKS
function getBrowserName() {
var name = "Unknown";
if (navigator.userAgent.indexOf("MSIE") != -1) {
name = "msie";
}
if (navigator.userAgent.indexOf("Trident") != -1) {
name = "msie";
}
if (navigator.userAgent.indexOf("Edge") != -1) {
name = "msie";
} else if (navigator.userAgent.indexOf("Firefox") != -1) {
name = "firefox";
} else if (navigator.userAgent.indexOf(" OPR/") >= 0) {
name = "opera";
} else if (navigator.userAgent.indexOf("Chrome") != -1) {
name = "chrome";
} else if (navigator.userAgent.indexOf("Safari") != -1) {
name = "safari";
}
return name;
}
if (getBrowserName() != "Unknown") {
document.getElementsByTagName('html')[0].className += "is-" + getBrowserName(name);
}
// DOESN'T WORK
var mobile = (/iphone|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
if (mobile) {
document.getElementsByTagName('html')[0].className += "is-mobile";
}
// WORKS
if (mobile) {
$(".about-text").css("width", "90%");
$("body").css("font-size", "50px");
$("section").css("padding-top", "160px");
}
/* works */
.is-msie hr {
margin: 50px 0 10px 0;
}
/* doesn't work */
.is-mobile hr {
margin: 50px 0 10px 0;
}
<!--REPEATING TABLE WITH HR FOR SEPARATORS -->
<div class="col span-1-of-2 table right-col">
<hr>
<div>
<div class="col span-1-of-8 date">
<p><span>12</span> Nov.</p>
</div>
<div class="col span-1-of-8 venue">
<p>The Venue</p>
</div>
<div class="col span-1-of-8 city">
<p>San Francisco, CA</p>
</div>
<div class="col span-1-of-8 rsvp desktop">
<div><a class="btn-sm btn-full" href="#">RSVP</a></div>
</div>
<div class="col span-1-of-8 tickets desktop">
<div><a class="btn-sm btn-ghost" href="#">Tickets</a></div>
</div>
<div class="col span-2-of-8 info">
<div><a class="btn-sm btn-full" href="#">Info</a></div>
</div>
</div>
<hr>
<div>
<div class="col span-1-of-8 date">
<p><span>12</span> Nov.</p>
</div>
<div class="col span-1-of-8 venue">
<p>The Venue</p>
</div>
<div class="col span-1-of-8 city">
<p>San Francisco, CA</p>
</div>
<div class="col span-1-of-8 rsvp desktop">
<div><a class="btn-sm btn-full" href="#">RSVP</a></div>
</div>
<div class="col span-1-of-8 tickets desktop">
<div><a class="btn-sm btn-ghost" href="#">Tickets</a></div>
</div>
<div class="col span-2-of-8 info">
<div><a class="btn-sm btn-full" href="#">Info</a></div>
</div>
</div>
<hr>
<div>
<div class="col span-1-of-8 date">
<p><span>12</span> Nov.</p>
</div>
<div class="col span-1-of-8 venue">
<p>The Venue</p>
</div>
<div class="col span-1-of-8 city">
<p>San Francisco, CA</p>
</div>
<div class="col span-1-of-8 rsvp desktop">
<div><a class="btn-sm btn-full" href="#">RSVP</a></div>
</div>
<div class="col span-1-of-8 tickets desktop">
<div><a class="btn-sm btn-ghost" href="#">Tickets</a></div>
</div>
<div class="col span-2-of-8 info">
<div><a class="btn-sm btn-full" href="#">Info</a></div>
</div>
</div>
<hr>
<div>
<div class="col span-1-of-8 date">
<p><span>12</span> Nov.</p>
</div>
<div class="col span-1-of-8 venue">
<p>The Venue</p>
</div>
<div class="col span-1-of-8 city">
<p>San Francisco, CA</p>
</div>
<div class="col span-1-of-8 rsvp desktop">
<div><a class="btn-sm btn-full" href="#">RSVP</a></div>
</div>
<div class="col span-1-of-8 tickets desktop">
<div><a class="btn-sm btn-ghost" href="#">Tickets</a></div>
</div>
<div class="col span-2-of-8 info">
<div><a class="btn-sm btn-full" href="#">Info</a></div>
</div>
</div>
<hr>
</div>
あなたの '+ =" is-mobile "の文字列の先頭に空白を入れて、結果が' class1 class2is-mobile'ではなくclass1 class2 is-mobile'となるようにします。 –
Iここであなたの答えを見つけることができると思います: http://stackoverflow.com/questions/11381673/detecting-a-mobile-browser –