0

単純な静的Webパーツを作成する必要があります-唯一の動的パーツは現在のユーザーログイン名です(リンクのURLパラメーターに含める必要があります)。

デプロイする必要のあるカスタムWebパーツではなく、コンテンツエディターWebパーツを使用したいだけです。実際、私はすでにJavaScriptとActiveXを使用してそれを行いました(WScript.Shell-以下の完全なコード)

それを行うためのより良い、よりネイティブな方法はありますか?ActiveXアプローチについて私が気に入らないのは、IEのより自由な構成が必要であり、セキュリティ設定でActiveX関連のすべてを有効にしても、クリックする必要のあるプロンプトが表示されることです。クロスブラウザのサポートは大きな問題ではなく、イントラネットですが、追加機能としても便利です。

私が考えることができる1つの方法は、jQuery(またはJavaScript)を使用して右上隅からユーザー名を取得することですが、さらにクリーンなものはありますか?または、誰かがすでにスクレイピングを実行していて、コードを共有して時間を節約できるかもしれません;-)

これが私の現在の解決策です:

<script language="javascript">
    function GetUserName()
    {
        var wshell = new ActiveXObject("WScript.Shell");
        var username = wshell.ExpandEnvironmentStrings("%USERNAME%");

        var link = document.getElementById('linkId');
        link.href = link.href + username.toUpperCase();
    }
</script>
<P align=center>
    <a id="linkId" onclick="GetUserName();" href="<my_target_URL>?UserID=">open username-based URL</a>
</P>
4

2 に答える 2

2

このWebパーツトークンをコンテンツエディタのWebパーツに含めます。

_LogonUser_

Request.ServerVariables( "LOGON_USER")と同じ値を出力します

内部テキストを取得するために、非表示のスパンとプレーンな古いdocument.getElementByIdに含める前にこれを実行しました。

于 2013-03-01T12:35:56.093 に答える
0

私の結論は、それを行うためのより良い方法はないということです (これも十分に簡単です)。

ページのソースを確認したところ、ユーザー名がどこにもないため、JavaScript/jQuery でスクレイピングできません。ブラウザはリクエストと一緒にそれを送信していないように見えるため (ローカル IP やその他のクライアント関連情報と同様)、ヘッダーからも取得できません。私が考えることができる他の唯一のアプローチは、クライアント側から Web サービスを呼び出すことです。これは、私のシナリオではやり過ぎです。

于 2013-03-01T12:15:10.247 に答える