3

このjQueryコードは、ワードプレスエディターでブックマークレットとして実行されます。ブックマークレット/jQueryコードは、コンテンツフィールドのテキストを編集し、URLの最後にパラメーター(例:?parameter)を追加します。

URLは常に同じドメイン名(例:domain.com)です。ただし、URLには多くの場合ディレクトリが含まれます(例:domain.com/directory/index.html?parameter)。ドメイン名の後にあるものに関係なく、jQueryコードを追加する必要があります。

最も複雑な状況はですdomain.com/directory/index.html?someotherparameter?parameter。このコンテンツ領域には多くの場合、複数のURLが含まれるため、スクリプトはテキスト全体をループする必要があります。

私のセミワーキングコード

var url= 'domain.com';
var append = ' ?parameter ';

$(".wp-editor-area").each(
    function(){
        var haystack = $(this).text();
        $(this).text(haystack.replace(url, url+ append));
    });

変更するHTMLコード

<div id="wp-content-editor-container" class="wp-editor-container"><textarea class="wp-editor-area" rows="10" tabindex="1" cols="40" name="content" id="content">&lt;a title="This is a hyperlink" href="http://domain.com/directory"&gt;This is a hyperlink&lt;/a&gt;</textarea></div>

その現在の出力

<a title="This is a hyperlink" href="http://domain.com ?parameter /directory">This is a hyperlink</a>

利便性のためのJsfiddle

URL全体の後に出力が追加されないことに注意してください。より複雑なURLにこれを変更し、テキストの本文にさらに多くのURが含まれている場合、ドキュメントをループするにはどうすればよいですか?

私が見つけた唯一の関連する同様の質問はこれですが、結果を複製することはできませんでした。

ありがとう!!

4

1 に答える 1

2

まず、フィドル

あなたのサンプルコードは、まさにあなたが要求したことを行っていました。'domain.com'文字列の一部をドメインとパラメーターに置き換えました。見つかったら'domain.com'、他に何か接続されているかどうかを確認するのをやめました。

単純なテキスト置換の代わりに、正規表現を使用して文字列内の URL を検索してみてください。

ソース:

<div id="wp-content-editor-container" class="wp-editor-container">
    <textarea class="wp-editor-area" rows="10" tabindex="1" cols="40" name="content" id="content">
        &lt;a title="This is a hyperlink" href="http://domain.com/directory"&gt;This is a hyperlink&lt;/a&gt;
        &lt;a title="This is another hyperlink" href="http://google.com/directory"&gt;This is another hyperlink&lt;/a&gt;        
    </textarea>
</div>​

Javascript:

var url = 'domain.com';
var append = '?parameter ';

$(".wp-editor-area").each(function() {
    $(this).text(urlify($(this).text()));
});

function urlify(text) {
    var urlRegex = /(\b(https?|ftp|file):\/\/[domain.com][-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
    return text.replace(urlRegex, function(url) {
        return url + append;
    })
}​
于 2012-07-10T22:31:19.333 に答える