質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Alfred

Alfredは、ランチャーアプリケーションソフトのひとつです。Mac OSで使用することが可能で、Web上やMacのコンピュータ内の両方から検索を同時に行い、瞬時に結果を出すことができます。ヒットしたサイト・アプリをクリックすると起動し、サイトを開くことも可能です。

Q&A

解決済

1回答

465閲覧

Firefoxのブラウザから、現在のタグのタイトルとURLを抽出したい

dialbird

総合スコア379

Firefox

Mozilla Foundationによって作られた無料、オープンソース、クロスプラットフォームなウェブブラウザ

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Alfred

Alfredは、ランチャーアプリケーションソフトのひとつです。Mac OSで使用することが可能で、Web上やMacのコンピュータ内の両方から検索を同時に行い、瞬時に結果を出すことができます。ヒットしたサイト・アプリをクリックすると起動し、サイトを開くことも可能です。

0グッド

0クリップ

投稿2017/12/04 15:57

公開されているAlfredのワークフローの一つにLazyLinkという非常に便利なツールがあるのですが、Safari、Chromeには対応しているものの、Firefoxには対応していないのです

そこで自分でコードを補強しようかと思ったのですが、Safari、ChromeのようにFirefoxブラウザから情報を取得することができません

以下が、現時点でのコードです

// osascript ObjC.import('AppKit'); function run(argv) { var res = {}; getWebLink(res); if (res.hasOwnProperty('title') && res.hasOwnProperty('url')) { copyToClipboard(res); pasteFromClipboard(); return res.title + ' - ' + res.url; } return 'Failed!'; } function getWebLink(res) { // ここでFirefoxの項目を追加 var browsers = [ 'Safari', 'Google Chrome', 'Firefox' ]; var strBrowser = ''; for (var i = 0; i < browsers.length; i++) { if (Application(browsers[i]).running()) { strBrowser = browsers[i]; break; } } if (strBrowser === '') { return false; } if (strBrowser === 'Safari') { var tab = Application(strBrowser).windows[0].currentTab; res.url = tab.url(); res.title = tab.name(); } else if (strBrowser === 'Google Chrome') { res.title = applyJsCode( function () { return document.title; }, strBrowser ); res.url = applyJsCode( function () { return document.URL; }, strBrowser ); }  else if (strBrowser === 'Firefox') { // 本当はここでタイトルとURLを取得したいのだけど、 // Error: タイプを変換できませんと出てエラーになります res.title = applyJsCode( function () { return document.title; }, strBrowser ); res.url = applyJsCode( function () { return document.URL; }, strBrowser ); } else { return false; } return true; } function applyJsCode(fn, strBrowser) { var browser = Application(strBrowser); var jsCode = '(' + fn.toString() + ').apply(null);'; var res = ''; if (strBrowser === 'Safari') { res = browser.doJavaScript( jsCode, { "in": browser.windows[0].tabs[0] } ); } else { res = browser.windows[0].activeTab.execute({ "javascript": jsCode }); } return res; } function copyToClipboard(res) { var pb = $.NSPasteboard.generalPasteboard; var str1 = $.NSString.alloc.initWithUTF8String('<a href="' + res.url + '">' + res.title +'</a>'); var str2 = $.NSString.alloc.initWithUTF8String('[' + res.title + '](' + res.url + ')'); var str3 = $.NSString.alloc.initWithUTF8String('{\rtf1\ansi\deff0{\field{\*\fldinst{HYPERLINK "' + res.url + '"}}{\fldrslt ' + res.title + '}}}'); pb.clearContents; pb.setStringForType(str1, $.NSPasteboardTypeHTML); pb.setStringForType(str2, $.NSPasteboardTypeString); pb.setStringForType(str3, $.NSPasteboardTypeRTF); } function pasteFromClipboard() { var se = Application('System Events'); se.keystroke('v', { using: 'command down' }); }

Firefoxだけ特殊なブラウザゆえ、このworkflowもfirefoxだけを無視しているのでしょうか?
最近大幅なアップグレードがありましたが、依然としてFIrefoxのパラメーターの取得は難しいのでしょうか?

よろしくお願いいたします

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

defghi1977

2017/12/04 20:41

発生したエラーの内容も記載して下さい
dialbird

2017/12/04 22:13

defghiさん エラーなのですが、現在でているのは、applyJsCodeの中のbrowser.windows[0].activeTab.executeの箇所に対して、1657:1705: execution error: Error on line 87: Error: タイプを変換できません。 (-1700)と出ています
defghi1977

2017/12/04 23:28

AlfredやmacOSについては全く知らないので恐縮なのですが, 察するにあなたはオリジナルのlazylinkを元にFireFoxでも動作する改変版を作ろうとなさっている. であれば, ここで訊くよりも直接作者に「なぜFireFoxをサポートしない(出来ない)のか」についてコンタクトを取ったほうが早い気がします.
m.ts10806

2017/12/04 23:59

できない(サポートしていない)にはできない理由があるかと思います。その理由については作者が一番知っているはずなので、defghi1977さんが仰っているように、作者へのコンタクトの方が良いかと思います。既存ツールの改修は完全自己責任ですのでteratailのようなQAサイトではフォローしきれない部分が必ずでてきます。
dialbird

2017/12/05 00:01

defghi1977さん mts10806さん ありがとうございます。承知致しました。コンタクトを取ってみようと思います
guest

回答1

0

自己解決

お二方のアドバイス通り、開発者に聞いて見たところ、やはりFirefoxだけブラウザが特殊なようで、必要な値がとってこれないそうです

I'm sorry I couldn't find the way to get the title and URL from the Firefox. I also want to support it.

投稿2017/12/06 00:13

dialbird

総合スコア379

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問