0

これは説明するのが少し難しいです: 私は、インクルードを含む別の PHP ファイルを出力する単純な PHP ファイルを持っています:

<?php include("file.php"); ?>

私がやりたかったのは、最初のページにその一部だけを表示することです。そこで、オーバーフローを使用してスクロールバー付きのウィンドウを作成しました。

<div style="height: 130px; width: 800px; border: 1px solid #CCCCCC; overflow: auto;">
 <?php include("file.php"); ?>
</div>

すべてがうまく機能します。しかし、ここで別の機能を追加したいと思います。このオーバーフロー領域内をクリックして Ctrl+A を押すと、オーバーフロー領域の一部のみが選択されます (ページ全体ではありません)。

HTML フレームを使用してみました。これにより、必要な機能が得られましたが、オーバーフローした PHP ファイルが解析されません。これを達成し、それでも PHP ファイルを解析する方法はありますか?

4

2 に答える 2

3

いくつかのオプションがあります

含めないでください。iframe 経由でリンクしてください

あなたがどのようにそれを行ったかはわかりませんが、フレームはサーバーによって解析されるものに影響を与えません. IFrame またはフレームは、通常の GET 要求を行うだけで、サーバーは要求されたファイルを解析するかどうかを決定します。

file1.php

<style>
    .document {
        height: 130px; 
        width: 800px;
        border: 1px solid #CCCCCC;
    }
</style>
<iframe src="file2.php" class="document" />

「すべて選択」を制限する要素に含める

「テキスト」のみを含めたい場合(誰が知っているか、それは...)。インクルードされたファイルをtextarea.

file1.php

<style>
    .document {
        height: 130px; 
        width: 800px;
        border: 1px solid #CCCCCC;
    }
</style>
<textarea class="document"><?php include('file2.php'); ?></textarea>

ちょっと変わった方法: 「ctrl+a」をキャッチして contenteditable を適用します。

ContentEditable フィールドは、「すべて選択」を制限します。ここでデモを見る

file1.php

<style>
    .document {
        height: 130px; 
        width: 800px;
        border: 1px solid #CCCCCC;
    }
</style>
<div class="document"><?php include('file2.php'); ?></div>
$(window).bind('keydown', function(e) {
    if(event.ctrlKey && event.keyCode == 65) {
        var self = $('.document').attr('contenteditable', '');
        window.setTimeout(function() {
            self.removeAttr('contenteditable');
        }, 20);
    }
});

contenteditable を使用すると、textranges を使用して内容を選択するよりも利点が 1 つあります。含まれているドキュメントの外側をクリックすると、ページ上のすべてのテキストが選択されます (「含まれているファイルのみを選択する」機能を「強制」するのではなく)。

于 2012-10-11T16:33:57.687 に答える
0

キーの組み合わせを JavaScript で傍受できる可能性があります。それを傍受できれば、必要な部分を強調表示できる可能性があります。できることとできないことの詳細な分析については、こちらを参照してください。

編集:

これを Firefox 13 で確認したところ、キーの組み合わせ Ctrl+A をインターセプトしているようです

$(window).keydown(function(event) {
  if(event.ctrlKey && event.keyCode == 65) { 
    console.log("Ctrl+A event captured!");
    event.preventDefault(); 
  }
});

おそらく、そこにコードを挿入して、選択したいテキストの部分を選択できます。

EDIT 2: テキストの選択方法:

テキストを選択する方法を説明するこの投稿を見つけました(マウスで強調表示)。これを得るためにすべてをまとめました:

$(window).keydown(function(event) {
  if(event.ctrlKey && event.keyCode == 65) { 
    console.log("Ctrl+A event captured!");
    selectText('test');
    event.preventDefault(); 
  }
});

function selectText(element) {
  var doc = document
      , text = doc.getElementById(element)
      , range, selection
  ;    
  if (doc.body.createTextRange) { //ms
      range = doc.body.createTextRange();
      range.moveToElementText(text);
      range.select();
  } else if (window.getSelection) { //all others
      selection = window.getSelection();        
      range = doc.createRange();
      range.selectNodeContents(text);
      selection.removeAllRanges();
      selection.addRange(range);
  }

繰り返しますが、Firefox 13 では、これは機能しているようです。選択する必要がある div の ID をパラメーターとして selectText() 呼び出しに入れます。

于 2012-10-11T15:15:28.377 に答える