0

<title>読み込み後に数秒間表示し、それを別の に置き換えるきちんとしたコードがあります<title>。私たちが達成しようとしている効果は、Safari の一部のバージョンまたは iPad では機能しないため、Safari を確認したいと思います。ブラウザーが Safari の場合は、効果をキャンセルします。現時点では機能しません。問題は safariFix 関数にあると確信していますが、まだ初心者であり、何が問題なのかわかりません。

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Uppagus</title>
<link rel="stylesheet" type="text/css" href="uppagusSTYLE.css" />
<link rel= "shortcut icon" media="all" type="image/x-icon" href="http://www.uppagus.com/favicon.ico" /> 
<link rel= "icon" media="all" type="image/vnd.microsoft.icon" href="http://uppagus.com/favicon.ico" />
<meta http-equiv="Page-Exit" content="revealTrans(Duration=2.0,Transition=23)">
<script src="jquery.min.js"></script>
<script>
  var isSafari;
  var ua = navigator.userAgent.toLowerCase(); 
  if(ua.indexOf('safari') != -1) { 
    if(ua.indexOf('chrome') > -1) {
      var isSafari = false;
    } else {
      var isSafari = true;
      safariFix();
    }
  } else {
    isSafari = false;
  }

  function safariFix() {
    $(function() {
      $('#googleFix').replaceWith('<script id="safariFix">function updateTitle() { document.getElementsByTagName("title")[0].innerHTML = "Uppagus";</script>');
    });
  }
</script>
<script id="googleFix">
function updateTitle() {
    setTimeout(function() {
        document.getElementsByTagName('title')[0].innerHTML = 'ppagus';
    }, 2000);
}
</script>

...
</head>
4

1 に答える 1

1

スクリプト ブロックは、ブラウザーがドキュメントの解析中に遭遇すると、上から下に実行されます。したがって、最初のスクリプトのコードを使用して、そのスクリプトの後の要素を操作することはできません。後に現れるスクリプト要素を置き換えようとしています。

しかし、なぜスクリプトを置き換えようとするのでしょうか。ロジックをスクリプトに入れてみませんか。

var ua = navigator.userAgent.toLowerCase();
var isSafari = ua.indexOf('safari') != -1 && ua.indexOf('chrome') == -1;

function updateTitle() {
    if (isSafari) {
        document.getElementsByTagName("title")[0].innerHTML = "Uppagus";
    } else {
        setTimeout(function() {
            document.getElementsByTagName('title')[0].innerHTML = 'ppagus';
        }, 2000);
    }
}

(ネストされた if/else 構造は必要以上に複雑であることに注意してください。)

于 2013-06-15T05:01:33.783 に答える