0

私はlocalStorage人のURLパスを保存するために使用したいと思っていますgavatar

これが私が打ち負かしてきたコードです...私は近いと思いますが、これを次/最後のステップにするための助けが必要です.

    <script type="text/javascript">
    if(typeof(Storage)!=="undefined")
    {
            if (localStorage.getItem("myAvatar") === null)
            {
                    <?php
                    $url = 'http://www.gravatar.com/avatar/' . md5(strtolower(trim('foo@foobar.com'))) . '?s=100&d=mm&r=g';
                    ?>
                    localStorage.setItem('myAvatar', '<?=$url;?>');
                    var myAvatar = '<?=$url;?>';
            }
            else
            {
                    var myAvatar = localStorage.getItem("myAvatar");
            }
    }
    else
    {
            var myAvatar = 'http://www.gravatar.com/avatar/00000000000000000000000000000000?s=100&d=mm&r=g';
    }
    </script>
    <img id="avatar" src="http://www.gravatar.com/avatar/00000000000000000000000000000000?s=100&d=mm&r=g">
    <script type="text/javascript">
    document.getElementById('avatar').src = 'myAvatar';
    </script>

php を javascript 内に配置することは良い方法ではないことを知っているので、これを解決するのを助けることに加えて、グラバターを取得するロジックにアプローチするためのより良い方法についての提案を聞くことに非常にオープンです。必要。

4

2 に答える 2

1

2 番目のスクリプトでソースを設定しようとするときに引用符を削除したい

document.getElementById('avatar').src = 'myAvatar';

する必要があります

document.getElementById('avatar').src = myAvatar;

'myAvatar'それ以外の場合は、実際に値が何であるかを見つけるのではなく、ソースを文字列に設定するだけmyAvatarです。

注意点として、最初のスクリプト タグのすべてのコードを 2 番目のスクリプト タグに移動すると、コードがすっきりし、読み込み順序が改善されます。

また、php コードを使用して文字列をフォーマットする (つまり、データベースから取得しない) だけの場合は、文字列が何に変換されるかを調べて、ハードコードすることができます。データベースまたは非静的変数からプルします。この方法で問題ありません。私の考えでは、この方法で php を含めることは悪い習慣ではありません。

于 2013-10-12T23:11:26.517 に答える
0

この短いドキュメントを参照してください: http://en.gravatar.com/site/implement/images/php/

ソースのコメントを読む

<?php
function &get_gravatar( $email, $s = 80, $d = 'mm', $r = 'g', $img = false, $atts = array() ) {
    $url = 'http://www.gravatar.com/avatar/';
    $url .= md5( strtolower( trim( $email ) ) );
    $url .= "?s=$s&d=$d&r=$r";

    //* Change this to what you need if there's an image add else if needed */
    if ( $img ) {
        $url = '<img src="' . $url . '"';
        foreach ( $atts as $key => $val )
            $url .= ' ' . $key . '="' . $val . '"';
        $url .= ' />';
        return $url;
    } else { 
        /** no image */
        return "http://www.gravatar.com/avatar/00000000000000000000000000000000?s=100&d=mm&r=g";
    }
}
//** make this happen */
$myAvatar =& get_gravatar(/** needs options read linked doc**/);
?>

また、 http://php.net/manual/en/functions.returning-values.phpから例 3 を読むこともできます。

それで

<script type="text/javascript">
    var myAvatar = "<?php echo $myAvatar; ?>";
</script>
于 2013-10-12T23:11:34.750 に答える