14

Web 開発者として、私は常にさまざまな環境 (ローカル、ステージング、テスト、運用) でプロジェクトに取り組んでいます。主に Drupal プロジェクトに取り組んでいます。サイトを閲覧しただけで、ローカルから本番環境に移行した回数は数えきれません。そして、実際にはローカル環境でのみ変更されるはずだった設定を、誤って本番環境で変更してしまいました。

ここにアイデアがあります: サイトのサブドメインに応じて色が変わる Chrome テーマ。

例: local.mysite.com*ではブラウザー クロームは緑、staging.mysite.com*では青、mysite.com*では標準のクローム グレーです。

これにより、さまざまな環境で作業する多くの人々の混乱を避けることができます。開発者だけでなく、「コンテンツ」の人にも。

残念ながら、そのような動作をする Chrome テーマをコーディングする方法がわかりません。

4

2 に答える 2

9

テーマは動的ではないため、ソリューションは簡単ではありません。 管理 API
を使用して機能を作成することができます。少なくとも 3 つの拡張機能が必要です。

  • テーマ切り替えのメインエクステンション。
  • テーマ #1、テーマ #2 など (追加のテーマごとに追加の拡張機能)。

方法

  1. テーマを作成する - Chrome テーマのドキュメントを参照してください。
  2. イベントをバインドしchrome.tabs.onUpdatedてタブの変更をリッスンし、場合によっては既知の「テーマタブ」の状態をハッシュに保存します (tabId による)。タブの URI が「特別」でなくなったら、演算子を使用して tabId を削除することを忘れないでくださいdelete
  3. バックグラウンド スクリプトを使用して、別の拡張機能を作成します。
    警告を追加:タブの変更をリッスンするには、以下のイベントを参照してください。このイベントには windowId と tabId が渡されます。手順 2 で作成したハッシュを使用して、テーマを変更する必要があるかどうかを確認します。chrome.tabs.onActivated
  4. chrome.management.setEnabledURL が特定のパターンに一致する場合は、メソッドを使用して新しいテーマを有効にします。

ステップ 3-4 の代替アプローチ:コンテンツ スクリプトを使用して、バックグラウンド ページのメソッドを呼び出します。一致パターンは、マニフェスト ファイル"content_scripts""matches"セクションで設定できます。

警告: Chrome 18 より前onActivatedのイベントは。Chrome 18 より前は、このイベントは と呼ばれていました。onActiveChanged

手順 2 ~ 4 で説明した拡張機能には、次のアクセス許可が必要です。

于 2012-04-05T14:22:57.607 に答える
2

私の解決策は、PHP を使用して接続しているサーバーを検出し、アプリケーション (WordPress、Drupal など) の管理画面を特定の色で更新することです。ローカル サイトとステージング サイトの上部にもカラー バーを表示できます。

WordPressの管理画面で私がしていることは次のとおりです。

// determine if this is development, staging or production environment
if (strpos(home_url(),'http://localhost') !== false)   
{
    define('MY_ENVIRONMENT', 'DEV');
}
else if (strpos(home_url(),'<enter staging URL here>') !== false)
{
    define('MY_ENVIRONMENT', 'STAGE');
}
else
{
    define('MY_ENVIRONMENT', 'PROD');
}

そして、これを使用して、WordPress 管理画面で特定の色を表示しました。

function change_admin_color($result) {
  return (MY_ENVIRONMENT== 'PROD' ? 'sunrise' : (MY_ENVIRONMENT== 'STAGE' ? 'ocean' : 'fresh'));
}
add_filter('get_user_option_admin_color','change_admin_color');
于 2014-01-15T17:42:05.443 に答える