Ich versuche CSS-Selektoren mit JavaScript für bestimmte Browser und auf Mobilgeräten zu erstellen. Dies ist die Methode, die bereits funktioniert:CSS-Selektor mit JavaScript erstellen
// 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);
}
Dies funktioniert gut durch .is-(browser-name element-selector { css }
Aufruf. Ich kann das jedoch nicht für das Handy nutzen. Hier ist mein Code ...
var mobile = (/iphone|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));
if (mobile) {
document.getElementsByTagName('html')[0].className += "is-mobile";
}
Ich habe alles mit außerhalb des if (mobile)
Abschnitt mit jQuery, die bereits funktioniert, aber ich möchte diesen Prozess machen ein bisschen schneller regelmäßigen CSS und JavaScript verwenden. Ich würde ein funktionsfähiges Code-Snippet hinzufügen, aber es wird offensichtlich nicht funktionieren, da mein aktueller Code davon abhängt, dass der Benutzer bestimmte Browser verwendet ... Ich habe ein Beispiel eingefügt, in der Hoffnung, dass es leichter zu lesen ist.
Hat jemand eine Idee, warum dieser Code für die verschiedenen Browser-Abschnitt funktioniert, aber nicht das Handy? Danke für die Hilfe!
// 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>
Sie wollen ein Leerzeichen am Anfang des Strings in Ihrem '+ =" is-mobile "', so dass das Ergebnis nicht 'class1 class2is-mobile' ist, sondern' class1 class2 is-mobile' –
I denke du kannst deine Antwort hier finden: http://stackoverflow.com/questions/11381673/detecting-a-mobile-browser –