iframeのコンテンツをtextareaにマッピングした話

まえがき

firefoxとchromeでインデックスの番号違うんだな。readyイベントとloadイベントの両方でやってみた。chromeはうまいことできなかったので、firefoxで。

01.html

外部ファイル読み込んでる

コード表示

<html>
  <head>
    <script src="../../lib/jquery-3.4.1.min.js"></script>
  </head>
  <body>
    <iframe id="iframe" src="../sql/01.txt" type="text/plain"></iframe>
    <textarea style="width:100%;height:100%;"></textarea>
    <script type="text/javascript" src="../../js/func/getiframecontent.js"></script>
  </body>
</html>

getiframecontent.js

jqueryで。

コード表示

$(window).on('load',function(){
    var a = $(document.querySelector('iframe')).contents()[0].all[4].innerText;
    console.log(a);
    console.log(Object.prototype.toString.call(a));
    $('textarea').text(a);
    $('iframe').remove();
});

01.txt

読み込んだ奴

コード表示

SELECT
    *
FROM
    (SELECT LEVEL AS rn FROM dual CONNECT BY LEVEL <=10)
MODEL
DIMENSION BY (rn)
MEASURES(
            1 AS val_asc
            ,CAST(NULL AS VARCHAR2(4000)) AS ope_asc
            ,row_number () OVER (ORDER BY rn DESC) AS rnn
            ,MAX(rn) OVER () AS val_desc
            ,CAST(NULL AS VARCHAR(4000)) AS ope_desc
            )
RULES(
        val_asc[rn] ORDER BY rn ASC = nvl(val_asc[cv() - 1],1) * cv(rn)
        ,ope_asc[rn] ORDER BY rn ASC = to_char(nvl(ope_asc[cv() - 1],NULL)) || CASE WHEN to_char(nvl(ope_asc[cv() - 1],NULL)) IS NULL THEN NULL ELSE ' * ' END || to_char(cv(rn))
        ,val_desc[rn] ORDER BY rnn DESC = nvl(val_desc[cv() - 1],1) * rnn[cv()]
        ,ope_desc[rn] ORDER BY rnn DESC = to_char(nvl(ope_desc[cv() - 1],NULL)) || CASE WHEN to_char(nvl(ope_desc[cv() - 1],NULL)) IS NULL THEN NULL ELSE ' * ' END || to_char(rnn[cv()])
        )
ORDER BY rn
;

実行例

できた。firefoxかっこいい。。

あとがき

web側おもしろいな。たのしい。

iframeから要素取り出せた話

まえがき

firefoxとchromeでインデックスの番号違うんだな。readyイベントとloadイベントの両方でやってみた。chromeはうまいことできなかったので、firefoxで。

01.html

外部ファイル読み込んでる

コード表示

<html>
  <head>
    <script src="../../lib/jquery-3.4.1.min.js"></script>
  </head>
  <body>
    <iframe id="iframe" src="../sql/01.txt" type="text/plain"></iframe>
    <textarea></textarea>
    <script type="text/javascript" src="../../js/func/getiframecontent.js"></script>
  </body>
</html>

getiframecontent.js

jqueryで。

コード表示

$(function(){
    var a = $(document.querySelector('iframe')).contents()[0].all;
    console.log(a);
    console.log(Object.prototype.toString.call(a));
});

$(function(){
    var a = $(document.querySelector('iframe')).contents()[0].all[4];
    console.log(a);
    console.log(Object.prototype.toString.call(a));
});

$(function(){
    var a = $(document.querySelector('iframe')).contents()[0].all[4].innerHTML;
    console.log(a);
    console.log(Object.prototype.toString.call(a));
});

$(window).on('load',function(){
    var a = $(document.querySelector('iframe')).contents()[0].all;
    console.log(a);
    console.log(Object.prototype.toString.call(a));
});

$(window).on('load',function(){
    var a = $(document.querySelector('iframe')).contents()[0].all[4];
    console.log(a);
    console.log(Object.prototype.toString.call(a));
});

$(window).on('load',function(){
    var a = $(document.querySelector('iframe')).contents()[0].all[4].innerHTML;
    console.log(a);
    console.log(Object.prototype.toString.call(a));
});

01.txt

読み込んだ奴

コード表示

SELECT
    *
FROM
    (SELECT LEVEL AS rn FROM dual CONNECT BY LEVEL <=10)
MODEL
DIMENSION BY (rn)
MEASURES(
            1 AS val_asc
            ,CAST(NULL AS VARCHAR2(4000)) AS ope_asc
            ,row_number () OVER (ORDER BY rn DESC) AS rnn
            ,MAX(rn) OVER () AS val_desc
            ,CAST(NULL AS VARCHAR(4000)) AS ope_desc
            )
RULES(
        val_asc[rn] ORDER BY rn ASC = nvl(val_asc[cv() - 1],1) * cv(rn)
        ,ope_asc[rn] ORDER BY rn ASC = to_char(nvl(ope_asc[cv() - 1],NULL)) || CASE WHEN to_char(nvl(ope_asc[cv() - 1],NULL)) IS NULL THEN NULL ELSE ' * ' END || to_char(cv(rn))
        ,val_desc[rn] ORDER BY rnn DESC = nvl(val_desc[cv() - 1],1) * rnn[cv()]
        ,ope_desc[rn] ORDER BY rnn DESC = to_char(nvl(ope_desc[cv() - 1],NULL)) || CASE WHEN to_char(nvl(ope_desc[cv() - 1],NULL)) IS NULL THEN NULL ELSE ' * ' END || to_char(rnn[cv()])
        )
ORDER BY rn
;

実行例

できた。firefoxかっこいい。。

あとがき

web側おもしろいな。たのしい。