0

全て -

私が実装しようとしている機能は次のとおりです

ページにリンクがあります。リンクをクリックするたびに、href 属性を変更する必要があります。たとえば、リンクは href 値で始まります

<a href="www.google.com">Click Me</a>

2 回目のクリックで www.yahoo.com に変わり、3 回目のクリックで www.google.com に戻ります。たった1人のユーザーのために、jqueryで次のコードを書きました

 $(".clickMe").bind("click", function(e){
  e.preventDefault();
  var currURL = $(this).attr("href");
  console.log($(this));
  if(currURL === 'www.google.com') {
    $(this).attr("href","www.yahoo.com");
    currURL = "www.yahoo.com";
  } else {
    $(this).attr("href","www.google.com");
    currURL = "www.google.com";
  }

  window.location = currURL;
});

複数のユーザー間で URL を切り替えるにはどうすればよいですか? 最初のユーザーがリンクをクリックした場合、href は www.google.com を指す必要があり、2 番目のユーザーの場合は www.yahoo.com などを指す必要があります。

4

5 に答える 5

2

クライアント側の JavaScript だけでそれを行う方法はありません。サーバーまたは Websocket に対して Ajax クエリを使用する必要があります。

これは非常に軽いサンプルです (これは確かに最良のものではありませんが、理解しやすいように単純にしています)

クライアント側 (完全な Fiddle を備えた JS : http://jsfiddle.net/DxNxj/1 ) :

function manageURL(updateServer){
  jQuery.ajax({
    type: 'GET',
    url: 'index.php'
    data: {
        action: (updateServer) ? 'setNextURL' : 'getNextURL'
    }, 
    success: function(data, textStatus, jqXHR) {
        $("#url").html(data);
    },
    error: function(jqXHR, textStatus, errorThrown) {
        console.log("Can't retrieve URL");
    }
  });
}

サーバー側 (PHP) :

<?php
if(isset($_GET['action']){
    if($_GET['action'] == 'getNextURL'){
        echo getURL();
    else if($_GET['action'] == 'setNextURL'){
        echo getURL(true);
    }
}

function getURL($next = false){
    $url = file_get_contents('url.txt');
    if($next){
        switch($url){
            case "http://google.fr":
                $url = "http://yahoo.com";
                break;
            case "http://yahoo.com":
                $url = "http://google.fr";
                break;
        }
        file_put_contents('url.txt', $url);
    }
    return $url;
}

?>
于 2013-08-05T14:23:27.543 に答える
1

JS はユーザーのブラウザーで実行され、別のユーザーのブラウザーへのリンクがないため、これは Javascript では不可能です。オプションは、URL に直接リンクするのではなく、ユーザーを「chooser-script」(php など) にリダイレクトすることです。次に、次のようにします (php の例):

$x = 'google.com';
$y = 'google.com';
$last_url = ''; // get it from a database or file or whatever
if($last_url == $x) {
    $redirect_url = $y;
} else {
    $redirect_url = $x;
}
update_last_url($redirect_url);
header('Location: '. $redirect_url;
于 2013-08-05T14:24:11.027 に答える
1

デモ

(function($) {
    $.fn.clickToggle = function(func1, func2) {
        var funcs = [func1, func2];
        this.data('toggleclicked', 0);
        this.click(function() {
            var data = $(this).data();
            var tc = data.toggleclicked;
            $.proxy(funcs[tc], this)();
            data.toggleclicked = (tc + 1) % 2;
        });
        return this;
    };
}(jQuery));
$('#click_me').clickToggle(function(){
    $(this).attr("href","http://www.google.com");
},function(){
    $(this).attr("href","http://www.yahoo.com");
});

ユーザーがリンクをクリックしてすべてのユーザーのリンクを更新する場合、すべてのユーザーをチェックし続ける必要があります。

于 2013-08-05T14:36:39.430 に答える
0

2 番目のユーザーをどのように識別しているのかわかりません。

とにかくjqueryのトグル機能を使っています。

ここで例を含む更新されたスクリプトを見つけてください

ありがとう

于 2013-08-05T14:31:00.563 に答える