Safariで一致したテキストを強調表示するAppleScript / JavaSript

ケビン

クリップボードから値を取得し、それらを個別に返し、現在のサファリウィンドウで一致するテキストを強調表示する次のスクリプトがあります。

set myNewList to {}

set myClipboard to the clipboard
set theList to words of myClipboard
##set theLength to (get length of mylist)


set ColortheList to {"009933", "000000", "660066", "660099", "003399", "0033ff", "336666", "339966", "339999", "3399cc", "3399ff", "33cc66", "006633", "006666", "006699", "0066cc", "33ffff", "9933cc", "0066ff", "009966", "3366ff", "993300", "993333", "339900", "009999", "0099cc", "0099ff", "6600cc", "6600ff", "663300", "663333", "663366", "9900ff", "663399", "6633cc", "6633ff", "666699", "00cc00", "339933", "00cc33", "00cc66", "00cc99", "00cccc", "993366", "00ccff", "00ff00", "336699", "ff3333", "3366cc", "00ff33", "33ff00", "6666cc", "6666ff", "ff9999", "669966", "66ff99", "993399", "990066", "990099", "9900cc", "ff0099", "66ffcc", "33ff33", "00ff66", "ffcccc", "33cc99", "ff66cc", "33cccc", "33ccff", "00ff99", "00ffcc", "33ffcc", "00ffff", "330066", "330099", "3300cc", "ff9999", "3300ff", "33ff66", "990033", "33ff99", "333300", "333333", "3333ff", "336600", "660000", "660033", "66ffff", "990000", "9933ff", "996600", "996666", "996699", "9966cc", "9966ff"}


repeat with a from 1 to length of theList
    copy ({item a of theList, some item of ColortheList}) to the end of the |myNewList|
    
end repeat



tell application "Safari"
    ## activate
    set theWindow to front window
    tell theWindow
        tell current tab
            repeat with colourPair in myNewList
                do JavaScript "document.designMode = 'on'"
                do JavaScript "var sel = window.getSelection(); sel.collapse(document.body, 0); while (window.find('" & (item 1 of colourPair) & "', true)) {document.execCommand('HiliteColor', false, '" & (item 2 of colourPair) & "');}"
                do JavaScript "document.designMode = 'off'"
            end repeat
        end tell
        
    end tell
end tell

これは問題なく動作しますが、特に10個以上の変数がある場合は遅くなります。さらに、誤ってキーボードのキーを押すと、Safariに読み込まれるページのコンテンツが変更されます。また、実行中にタップを変更すると、エラーが発生します。

スクリプトを高速化し、コードを改善する方法ですか?

user3439894

あなたが投稿したコード見ると、次のAppleScriptコードの は、コードを少し書き直す方法です。

set myNewList to {}

set theList to words of (the clipboard)

set ColortheList to {"009933", "000000", "660066", "660099", "003399", "0033ff", "336666", "339966", "339999", "3399cc", "3399ff", "33cc66", "006633", "006666", "006699", "0066cc", "33ffff", "9933cc", "0066ff", "009966", "3366ff", "993300", "993333", "339900", "009999", "0099cc", "0099ff", "6600cc", "6600ff", "663300", "663333", "663366", "9900ff", "663399", "6633cc", "6633ff", "666699", "00cc00", "339933", "00cc33", "00cc66", "00cc99", "00cccc", "993366", "00ccff", "00ff00", "336699", "ff3333", "3366cc", "00ff33", "33ff00", "6666cc", "6666ff", "ff9999", "669966", "66ff99", "993399", "990066", "990099", "9900cc", "ff0099", "66ffcc", "33ff33", "00ff66", "ffcccc", "33cc99", "ff66cc", "33cccc", "33ccff", "00ff99", "00ffcc", "33ffcc", "00ffff", "330066", "330099", "3300cc", "ff9999", "3300ff", "33ff66", "990033", "33ff99", "333300", "333333", "3333ff", "336600", "660000", "660033", "66ffff", "990000", "9933ff", "996600", "996666", "996699", "9966cc", "9966ff"}

repeat with anItem in theList
    copy {anItem, some item of ColortheList} to the end of the myNewList
end repeat

tell application "Safari"
    tell current tab of front window
        do JavaScript "document.designMode = 'on'"
        repeat with colourPair in myNewList
            do JavaScript "var sel = window.getSelection(); sel.collapse(document.body, 0); while (window.find('" & (item 1 of colourPair) & "', true)) {document.execCommand('HiliteColor', false, '" & (item 2 of colourPair) & "');}"
        end repeat
        do JavaScript "document.designMode = 'off'"
    end tell
end tell

私はいくつかのタイミングテストを行いましたし、呼び出すことがないことにより、改善のビットがあったdo JavaScript "document.designMode = 'on'"do JavaScript "document.designMode = 'off'"それぞれの項目リスト秒でrepeat ループが

また、私が持っているように最初のrepeat ループ書くことは、リストの長さを計算する必要性を否定します。それは無関係であり、ほんの一瞬の時間を削ります。

このアイテムはスピードアップしませんでしたが、括弧垂直パイプなどの不要な文字も削除しました

私はまた、使用set theList to words of (the clipboard)の二行の代わりにコードを使用すると、同じ結果を得るために使用される、set myClipboard to the clipboardset theList to words of myClipboardだけの量減らすためにコードを書くために、それは量少なくなるようIMOそれは、ちょうど読みやすいですコードを読んで、あまりにも維持します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

JavasriptでhtmlForなしでLabelを取得する方法は?

分類Dev

Unityからjavasriptにバイト配列を送信する

分類Dev

jQuery / Javasript:URLを変更した後にコードを実行する

分類Dev

Returnは、同じ関数で2つの待機を待機します。JavaSript

分類Dev

React-native別のjavasriptファイルで状態値を使用する方法

分類Dev

javasriptで配列オブジェクトの特定のオブジェクトに値を設定する方法

分類Dev

ループ付きのJavasriptでオブジェクトを配列にマージする方法

分類Dev

入力テキストを文字列配列と比較した後、結果で一致する単語を強調表示します

分類Dev

Javasriptオブジェクトをオブジェクトの配列に解析する方法

分類Dev

テキストJavaScriptの文の一致するすべての単語を強調表示します

分類Dev

文字列内の一致するテキストのみを強調表示します(JQuery / Javascript)

分類Dev

正規表現に一致するテキストを強調表示します

分類Dev

正規表現に一致するテキストを強調表示します

分類Dev

Webページで検索一致テキストを強調表示する方法

分類Dev

正規表現は、htmlから一致するテキストを強調表示する角度フィルターに必要なものを支援しました

分類Dev

Pandas DF一致テキストのテキスト(文字列タイプ)を強調表示する

分類Dev

Reactで検索したテキストを強調表示する

分類Dev

テキストボックス内の一致のセットを強調表示する

分類Dev

Pythonパンダ:一致するテキストと行を強調表示する

分類Dev

<div>のHTMLクラスを変更し、レンダリングしてから、残りの関数コードの実行を続行するJavasript関数

分類Dev

別の文字列との一致に基づいてテキストを強調表示する

分類Dev

ReactJsを使用して、検索リストで一致した文字/単語を強調表示します

分類Dev

.reduce()を使用したJavasript配列のワイドからロングへの変換により、空の配列が生成されます

分類Dev

Excel列で一致するテキストを強調表示するにはどうすればよいですか?

分類Dev

列 B のテキストに一致する列 A のセルを強調表示するにはどうすればよいですか?

分類Dev

QPlainTextEditでテキストの一部を強調表示する

分類Dev

jQueryは、live()またはon()で一致した要素を強調表示します

分類Dev

引数のないJavasript配列関数

分類Dev

Wordでテキストをコピーした後、テキストを黄色で自動的に強調表示する

Related 関連記事

  1. 1

    JavasriptでhtmlForなしでLabelを取得する方法は?

  2. 2

    Unityからjavasriptにバイト配列を送信する

  3. 3

    jQuery / Javasript:URLを変更した後にコードを実行する

  4. 4

    Returnは、同じ関数で2つの待機を待機します。JavaSript

  5. 5

    React-native別のjavasriptファイルで状態値を使用する方法

  6. 6

    javasriptで配列オブジェクトの特定のオブジェクトに値を設定する方法

  7. 7

    ループ付きのJavasriptでオブジェクトを配列にマージする方法

  8. 8

    入力テキストを文字列配列と比較した後、結果で一致する単語を強調表示します

  9. 9

    Javasriptオブジェクトをオブジェクトの配列に解析する方法

  10. 10

    テキストJavaScriptの文の一致するすべての単語を強調表示します

  11. 11

    文字列内の一致するテキストのみを強調表示します(JQuery / Javascript)

  12. 12

    正規表現に一致するテキストを強調表示します

  13. 13

    正規表現に一致するテキストを強調表示します

  14. 14

    Webページで検索一致テキストを強調表示する方法

  15. 15

    正規表現は、htmlから一致するテキストを強調表示する角度フィルターに必要なものを支援しました

  16. 16

    Pandas DF一致テキストのテキスト(文字列タイプ)を強調表示する

  17. 17

    Reactで検索したテキストを強調表示する

  18. 18

    テキストボックス内の一致のセットを強調表示する

  19. 19

    Pythonパンダ:一致するテキストと行を強調表示する

  20. 20

    <div>のHTMLクラスを変更し、レンダリングしてから、残りの関数コードの実行を続行するJavasript関数

  21. 21

    別の文字列との一致に基づいてテキストを強調表示する

  22. 22

    ReactJsを使用して、検索リストで一致した文字/単語を強調表示します

  23. 23

    .reduce()を使用したJavasript配列のワイドからロングへの変換により、空の配列が生成されます

  24. 24

    Excel列で一致するテキストを強調表示するにはどうすればよいですか?

  25. 25

    列 B のテキストに一致する列 A のセルを強調表示するにはどうすればよいですか?

  26. 26

    QPlainTextEditでテキストの一部を強調表示する

  27. 27

    jQueryは、live()またはon()で一致した要素を強調表示します

  28. 28

    引数のないJavasript配列関数

  29. 29

    Wordでテキストをコピーした後、テキストを黄色で自動的に強調表示する

ホットタグ

アーカイブ