27

実際のXHTMLStrict1.0ドキュメントをw3cバリデーターサービスで検証しました。

<ul id="socialnetwork">
            <li><a href="http://www.twitter.com" target="_blank"></a></li>
            <li><a href="http://www.flickr.com" target="_blank"></a></li>
            <li><a href="http://www.xing.com" target="_blank"></a></li>
            <li><a href="http://www.rss.com" target="_blank"></a></li>
</ul>

target = "_ blank"は無効です。ただし、ユーザーがメインページを離れないように、ブラウザで新しいタブが開くように、ターゲットを空白にする必要があります。

私に何ができる?なぜこれが無効なのですか?

4

8 に答える 8

17

W3のよくある質問を確認することをお勧めします:http ://www.w3.org/MarkUp/2004/xhtml-faq#target

XHTML 1.1からターゲット属性が削除されたのはなぜですか?

そうではありませんでした。XHTML 1.0には、strict、transitional、framesetの3つのバージョンがあります。これらの3つはすべて、XMLが許す限りHTML4.01に可能な限り近づけるように意図的に維持されました。XHTML1.1はXHTML1.0strictの更新バージョンであり、HTMLstrictのどのバージョンにもターゲット属性が含まれていません。他の2つのバージョン、トランジショナルとフレームセットは、更新するものがなかったため、更新されませんでした。target属性を使用する場合は、XHTML1.0トランジショナルを使用してください。

于 2011-01-12T08:22:55.360 に答える
9

自問すべき問題は、Strictの制限を「回避」する方法ではなく、そもそもなぜXHTMLStrict1.0を使用したいのかということです。

あなたの場合、DTDとしてTransitionalを使用します。もちろん、たとえば自動車システム、IOT、またはよりエキゾチックなアプライアンスで複数のウィンドウを開くことができない特定のオペレーティングシステム用に開発している場合を除きます。これが、HTMLStrictにターゲットが存在しない理由です。意図的に制限することを厳しくします。

しかし、「通常の」使用のために開発しているように見えるので、ドキュメントタイプはそれを反映する必要があり、次を使用する必要があります。

<!DOCTYPE html> 

また、ターゲットがxhtmlcheersJから削除された理由もご覧ください。

于 2013-03-09T10:56:15.180 に答える
7

ターゲット属性を追加しないことをお勧めします。アクセシビリティの理由で削除されました。ブラウザのタグを開く方法をページが決定したときに嫌いです。もちろん、必要に応じて自由に行うことができます。上記のDarinがXHTML1.0StrictまたはXHTML1.1として検証できるJavaScriptメソッドを紹介します。

HTMLコード:

<!-- Added link titles for better testing purposes -->
<ul id="socialnetwork">
    <li><a href="http://www.twitter.com/" class="targetblank">Twitter</a></li>
    <li><a href="http://www.flickr.com/" class="targetblank">Flickr</a></li>
    <li><a href="http://www.xing.com/" class="targetblank">XING</a></li>
    <li><a href="http://www.rss.com/" class="targetblank">RSS</a></li>
</ul>

JavaScriptコード:

window.onload = function() {
    // Code if document.getElementByClassName() doesn't exist
    if (document.getElementsByClassName == undefined) {
        document.getElementsByClassName = function(className) {
            var hasClassName = new RegExp("(?:^|\\s)" + className + "(?:$|\\s)");
            var allElements = document.getElementsByTagName("*");
            var results = [];

            var element;
            for (var i = 0; (element = allElements[i]) != null; i++) {
                var elementClass = element.className;
                if (elementClass && elementClass.indexOf(className) != -1 && hasClassName.test(elementClass))
                    results.push(element);
            }

            return results;
        }
    }

    var anchorList = document.getElementsByClassName('targetblank');
    for (var i in anchorList) {
        anchorList[i].target = '_blank';
    }
}

もちろん、window.onloadをすでに他の場所に含めている場合は省略できますが$(document).ready();、ページの読み込みが完了したときにJavaScriptが読み込まれるように、window.onloadを使用する(またはJQueryなどの別の読み込み関数を使用する)ことをお勧めします。これで、各アンカーリンクに「targetblank」のクラスを指定するだけで、リンクが新しいタブで開きます。

于 2011-01-13T05:34:20.963 に答える
3

この状況では、XHTML Strictで検証し、新しいウィンドウを表示できるようにする単純なjQueryソリューションを使用します。

<a href="http://www.example.com" class="linkExternal">Example URL</a>

<script type="text/javascript">
$(function(){
    $('a.linkExternal').on('click',function(e){
        e.preventDefault();
        window.open($(this).attr('href'));
    });
});
于 2012-07-10T07:56:17.223 に答える
1

この属性が回避策として無効と見なされる理由はわかりませんが、サイトをXHTML Strictとして検証する場合は、javascriptを使用してこの属性を追加できます。

于 2011-01-12T08:12:03.827 に答える
1

XHTMLSTRICTでターゲットを使用する最良の方法は次のとおりです。onclick="target='_blank';"

<a href="http://botje.tnhteam.com/" onclick="target='_blank';">Botje is overal</a>

例:下部にある[STRICT]ボタンをクリックします

_selfまたはその他のターゲットが必要な場合は、たとえば、_blankを_selfに変更できます。onclick="target='_self';"

この答えがあなた方の何人かに役立つことを願っています...

于 2014-09-04T07:28:09.597 に答える
0

これを試して:

<a href="#" onclick="window.open('urlgoeshere');">Link</a>
于 2012-10-18T21:30:30.490 に答える
-1

私はこれが好きです

<a href="http://myurl.com" onclick="this.target='_blank'">Anchor text</a> 
于 2013-09-19T14:10:27.020 に答える