2

お時間を割いていただき、ありがとうございます。

私はツイッターサイトに行き、彼らの指示に従って埋め込まれたタイムラインを作成しました.

生成されたコードをデスクトップの単純な html ページに配置すると、すべてが期待どおりに機能します。SPA アプリケーション内に同じコードを配置すると、サイトに「フォローしてください」リンクしか表示されません。SPA アプリケーションは、John Papa の例に基づいて構築されています。

スローされる JavaScript エラーはありません。問題の核心はルーティングに関係しているのではないかと推測しています.b/c タイムラインを埋め込んだページに直接移動すると、コードは期待どおりに機能します.

すなわちhttp://localhost:50000/App/views/shared/pillar.html

ただし、Google カレンダー ウィジェットもあり、期待どおりに動作します。Chrome、FF、IE でこれをテストしました。動作は同じです。

これをさらに診断する方法について何か考えはありますか? それとも私のアプローチは完全に間違っていますか?基本的にブログに最新の n 個のツイートを追加しようとしています。派手すぎるものはありません。

<a class="twitter-timeline" href="https://twitter.com/PoundingCode" data-widget-id="313336765203218432">Tweets by @PoundingCode</a>
<script>!function(d,s,id){

var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js =d.createElement(s); js.id=id;js.src=p+"://platform.twitter.com/widgets.js"; fjs.parentNode.insertBefore(js,fjs);}} (ドキュメント,"スクリプト","twitter-wjs");

4

2 に答える 2

2

私は解決策を見つけましたが、これを取り下げるのではなく、次の人に役立つことを願っています:

  1. twitter ウィジェットのコードを新しい html ドキュメントに入れます。
  2. そのドキュメントにハンドルというクエリ文字列を取り込ませる
  3. そのhtmlドキュメントにクエリ文字列を解析させ、それを挿入させます。
  4. Twitter ハンドルを持つオブザーバブルにバインドされた iframe を作成し、そのハンドルをクエリ文字列パラメーターとして渡します。

iFrame データバインディング:

 iframe data-bind="with: twitter, attr: { src: '../App/views/shared/twitter.html?handle=' + twitter() }" style="height:622px;" seamless="seamless"

ツイッターページ

<body>
    <a class="twitter-timeline" href="https://twitter.com/" + get('handle')  data-widget-id="313336765203218432" ></a>
    <script>
        function get(name) {
            if (name = (new RegExp('[?&]' + encodeURIComponent(name) + '=([^&]*)')).exec(location.search))
                return decodeURIComponent(name[1]);
        }


        !function (d, s, id) {
    var js, fjs = d.getElementsByTagName(s)[0], p = /^http:/.test(d.location) ? 'http' : 'https';
    if (!d.getElementById(id)) {
        js = d.createElement(s); js.id = id;
        js.src = p + "://platform.twitter.com/widgets.js";
        fjs.parentNode.insertBefore(js, fjs);
    }
}(document, "script", "twitter-wjs");</script>
</body>
于 2013-07-12T11:36:51.520 に答える