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

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

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

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

Chrome extension

Chrome拡張機能

Q&A

解決済

1回答

350閲覧

Chromeアドインで他人様のサイトに窓を「最前面」に表示

HCL

総合スコア1

JavaScript

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

Chrome extension

Chrome拡張機能

0グッド

1クリップ

投稿2022/08/29 06:19

編集2022/08/30 09:45

前提

ChromeアドインをJavaScriptで作成しています。

実現したいこと

他人様のサイト上でテキストを選択したときにトリガーして、
アドインで、その選択したテキストのそばに
情報を表示するための小窓を開く、という動作をしたいと思っています。

(例)
これはグーグル翻訳のChromeアドインです。
こんな感じのことです。
イメージ説明

発生している問題・エラーメッセージ

最前面に窓が表示されません。

サイトごとに最前面に表示されたり、されなかったり、
テキストの裏側にうっすら表示されたりします。

うっすら表示されるページ(Google翻訳アドオンの窓は表示される)
https://developer.chrome.com/docs/extensions/mv3/mv3-migration-checklist/
イメージ説明

該当のソースコード

var cnt_ranges = window.getSelection().rangeCount; var rects = window.getSelection().getRangeAt(cnt_ranges - 1).getClientRects(); var rect = rects[rects.length - 1]; var div_img= document.createElement("div"); div_img.style.position = "absolute"; div_img.style.zIndex = 2147483647; div_img.style.top = document.documentElement.scrollTop + rect.bottom + "px"; div_img.style.left = document.documentElement.scrollLeft + rect.right + "px"; // アイコン表示 var elm_img = document.createElement("img"); div_img.appendChild(elm_img); elm_img.setAttribute("src", chrome.extension.getURL("icons/001.png")); elm_img.setAttribute("style", "margin:5px; width:20px; height:20px;"); document.body.appendChild(div_img);

試したこと

zorder関連は調べましたがダメでした。
JavaScriptで自サイトで最前面に表示する情報はたくさんありましたが、
アドインで他サイトで自分のウィンドウを最前面に表示する方法は見つけられませんでした。

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

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

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

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

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

int32_t

2022/08/29 07:44

問題が現在の質問文のソース断片にあるとは限らないので、問題が再現できるすべての情報を出したほうがよいです。 今のままの情報だと「width / height がなく、background-color が初期値のままでは何も表示されなくて当然。style という変数が何なのか謎」という印象になります。
int32_t

2022/08/30 07:25

最前面に表示されないページのURLや、テキストの裏側にうっすら表示されるページのURLを教えて下さい。
HCL

2022/08/30 09:44 編集

ご回答ありがとうございます。 テキストの裏にうっすらウィンドウが見えるページ。 (その画像を、メインの質問に追加しました。) https://developer.chrome.com/docs/extensions/mv3/mv3-migration-checklist/ GooGle翻訳アドオンのアイコンはテキスト上に表示されます。 まったく表示されないページは今現在、見つけることができませんでした。 ときどき、表示されないことに気づきます。
guest

回答1

0

ベストアンサー

https://developer.chrome.com/docs/extensions/mv3/mv3-migration-checklist/

ここに関しては、img:not([alt]) { filter: blur(10px); } というスタイルがページにあるためです。elm_imgalt 属性を足すか、elm_img に filter: none; を付けましょう。

投稿2022/08/30 14:46

int32_t

総合スコア20856

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

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

HCL

2022/08/31 00:27

ご回答ありがとうございます。解決しました。 以下のいずれかで窓がはっきり表示されるようになりました。 elm_img.style.filter = "none"; elm_img.alt = ""; alt属性の無いimgタグはぼかしを入れる、というCSS設定がされていた、ということですね。 img:not([alt]) { filter: blur(10px); }
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問