1

そのドメインの Cookie を書き込むアプリケーションがあります。この Cookie には多くの情報が含まれていますが、機密情報はありません。保存する値の 1 つは、取得したい「DisplayFullName」です。

私はしばらく探していましたが、Cookie (その中のすべての値) を読み取ることができる多くのコード例を見つけましたが、具体的に特定の値を読み取ることを可能にするものは何も見つかりませんでした。jqueryの例を見つけましたが、値をループしているように見えました。ただし、私の cms には jquery がインストールされていないため、昔ながらの方法で実行したいと考えています。

これは、正常に動作しているように見える Cookie を読み取る必要があるコードです。特定の値を読み取るだけです。誰かが助けてくれたり、正しい方向に向けてくれたりしてくれませんか。

function getCookie(name)
{
  var re = new RegExp(name + "=([^;]+)");
  var value = re.exec(document.cookie);
  return (value != null) ? unescape(value[1]) : null;
}

alert(getCookie("ecm"));

最終的に、MyIframe をパラメーターとして呼び出した iframe ID の src に DisplayFullName を追加したいと考えています。

4

2 に答える 2

1

あなたへの私のアドバイスは、Cookie をまったく使用しないことです。はるかにユーザーフレンドリーな構文localStorageを持つインターフェースを使用してください。

例えば:

localStorage['ecm'] = 'some value';
alert(localStorage['ecm']);

これは単なる Javascript オブジェクトであるため、ドット表記も使用できます。

localStorage.ecm = 'some value';
alert(localStorage.ecm);

これは、最新のブラウザーにネイティブにのみ存在します。下位互換性が重要な場合は、さまざまな shim が利用可能です。たとえば、これは、舞台裏で旧式の Cookie を使用してすべてのブラウザーで機能を利用できるようにするものです。

于 2013-06-05T15:50:26.907 に答える
0

これはあなたのために働くでしょう。渡された名前を探して Cookie をループするだけです。

function getCookieByName(name) {
    var cookies = document.cookie.split(";"),
        yerCookie = null,
        cookiePair;

    for (var i=0; i < cookies.length; i++) {
        cookiePair = cookies[i].split("=");
        if (cookiePair[0].trim() === name) {
            yerCookie = cookiePair.slice(1).join("=");
            break;
        }
    }

    return yerCookie;
}

または、ここからcribbedされたこの素晴らしい機能を使用できます:

function readCookie(name) {
    var nameEQ = name + "=",
        ca = document.cookie.split(';'),
        i, c;

    for (i=0; i < ca.length; i++) {
        c = ca[i];
        while (c.charAt(0)==' ') {
            c = c.substring(1,c.length);
        }

        if (c.indexOf(nameEQ) == 0) {
            return c.substring(nameEQ.length,c.length);
        }
    }
    return null;
}

ecm cookie を取得したら、次のように解析します。

function getECMCookieProperty(ecmCookie, prop) {

    if (!ecmCookie) {
        return undefined;
    }

    var props = ecmCookie.split("&"),
        result = null,
        propList;

    for (var i=0;i<props.length;i++){
        propList = props[i].split("=");
        if (propList[0] === prop) {
            result = unescape(propList[1]);
            break;
        }
    }
    return result;
}

これらを使用するには、次のようにします。

var ecmCookie = getCookieByName("ecm");
var displayFullName = getECMCookieProperty(ecmCookie, "DisplayFullName");
alert(displayFullName)
于 2013-06-05T15:51:07.827 に答える