2016-08-01 4 views
0

モバイルビューでメインコンテンツの下にサイドバーdivを移動するスクリプトがあるクライアント用サイトを構築しました。このスクリプトはフッターにロードされます。外部スクリプト機能の最後でインラインスクリプトを再実行

// Move Global nav to top for mobile 
$(window).on("resize", function() { 
var windowSize = $(window).innerWidth(); 
    if(windowSize > 767){ 

     $(".utility-nav").insertBefore($(".global-nav")); 
     $(".sidebar-secondary").insertAfter($(".subnav")); 

    } else { 

     $(".global-nav").insertBefore($(".utility-nav")); 
     $(".sidebar-secondary").insertAfter($(".content-main")); 

    } 
}).resize(); 

彼らは、インラインスクリプトを含んコードスニペットを挿入するためにそれらを必要とするサードパーティのカレンダーを追加しています。これらがモバイルのために移動される.sidebar-secondary divに置かれると、コンテンツは消えます。私は、スクリプトが起動した後にスクリプトが実行されているので、キャンセルされていると思います。

私のスクリプトがその部門内のインラインスクリプトを再実行する方法はありますか? http://www.umary.edu/sandbox-training/index.php

左のサイドバーにあるスクリプトが誤動作しているものです。ここで

は、彼らがテストしているページです。

ありがとうございました!

答えて

0

あなたが

$('#run').click(function(){ 
 
\t $('#someSideBar').find('script').each(function(){ 
 
    \t eval($(this).text()); 
 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div id="someSideBar"> 
 
    <script type="text/javascript"> 
 
    \t alert('hello'); 
 
    </script> 
 
    <script type="text/javascript"> 
 
    \t alert('there'); 
 
    </script> 
 
</div> 
 
<input type="button" id="run" value="Run">
**あなたが進む前に、こののセキュリティへの影響を研究しなければならないそれらの内側にあなたのdivと evalテキスト内のすべてのスクリプトタグを取得することができます。

+0

私は町から外れていますが、私が戻るときにこれを試してみます。どうもありがとうございます! – MsMaryMak

0

あなたのコンテンツが消えた理由は、それらがDOMから切り離されたときに、あなたのコンテンツを保持する sがををアンロードされ、そしては再びDOMにそれらを取り付ける時にをロードしているためです。問題のがスクリプトによって生成されたように見えるので、2番目の読み込みによって空のドキュメントが生成されます。そのロード/アンロード動作を確認するには、simple DOM test-caseを参照してください。私が知る限り、この動作が禁止されているような方法でDOM内のiframeを移動する方法はありません。

明示的に要求しますが、インライン<script>を再実行するだけで、これらのスクリプトが(偶然または意図的に)これを可能にする方法で書かれていない限り、希望の結果が得られない場合があります。 非常にこの種類のものに注意してください。単一のdocument.write()がある場合は、ドキュメント全体が上書きされます。これは通常、第三者のスクリプトに渡すべき破壊力のようなものではありません。

  • フレックスボックスとorderプロパティを使用してコンテンツを並べ替えると、コンテンツはCSSではなくDOMで移動されます。
  • 他のコンテンツをDOM内で.sidebar-secondaryに移動する必要がないように並べ替えることができます。セカンダリコンテンツブロックを別の<div role="complimentary">(btw。これは<nav>のもの)に分割する必要があります。それが完了したら.sidebar-secondaryの容器の前に#content-startを移動することができます。
+0

私は町から外れていますが、私が戻るときにこれを試してみます。どうもありがとうございます! – MsMaryMak

関連する問題