2

みんな、おはよう、

WebView セクションを含む Cocoa アプリを開発および保守しています。PPC との互換性を維持するために、10.5 SDK に対してビルドされています。最新の Safari アップデート (10.7.4 アップデートに付属) では、すべての HTML 入力フィールドの背景が黒くなりました。たとえば、この HTML は次のように表示されます...

Username: <input type="text" name="username" id="something" placeholder="something"/></br> 
Password: <input type="password" name="password" id="somethingelse" placeholder="somethingelse"/>

ここに画像の説明を入力

私は「背景色」スタイルをいじってみましたが、ここで見つけた Webkit スタイルもいくつか試しましたが、うまくいきませんでした。奇妙なことに、このページは、Cocoa WebView ではなく、Safari では正常に表示されます。試してみるべきことについて何か提案はありますか?

4

4 に答える 4

4

私たちのアプリケーションも同じ問題に遭遇したので、掘り下げてみました。古いプライベート API の代わりに NSTextFieldCell を使用してフィールドの背景を描画するように WebKit が更新されたようです。

最後のリビジョンは出荷されたものに最も近いように見えますが、正確にはそうではありません (WebCore バイナリには WebCoreTextFieldCell がありません)。10.7.4 のソースはまだ公開されていないので、これで十分だと仮定しましょう。

重要なのは、NSTextFieldCell が [NSColor clearColor] を使用して背景を描画するように設定されていることです。もちろん、望ましい効果は、透明にレンダリングし、その下のコンテンツを覆わないことです。これは、合成モードが NSCompositeSourceOver に設定されていることを前提としています。

残念ながら、10.6 より前では、NSTextFieldCell は NSCompositeCopy [ 4 ] を使用していました。以前のアプリケーションとの下位互換性は、SDK のバージョンを確認することで達成されました。つまり、以前の SDK にリンクされたアプリケーションは、最終的にクリア カラーを合成する代わりにコピーすることになります。これは恐ろしい黒い混乱を引き起こします。

問題が理解できたので、「試してみることの提案」の部分に進むことができます。ここにいくつかのアイデアがあります:

  • Apple が間違いに気づき、アップデートを出荷するのを待ちます。
  • Swizzle -[NSTextFieldCell drawInteriorWithFrame:inView:] コントロール ビューが WebHTMLView の場合、背景を描画しないようにします。壊れやすいように聞こえ、Mac App Store に影響を与える可能性があります。
  • 10.6 SDK に対して再コンパイルします。

私は間違いなく最後のオプションを選びます。

于 2012-05-15T12:56:49.363 に答える
4

-webkit-appearance: none;少し安全かもしれませんが、入力要素スタイルへの追加も機能することがわかりました。

于 2012-06-04T04:29:21.613 に答える
2

全て。一時的な回避策として、テキスト ボックスに境界線を付けてスタイルを設定してください。これは私のために働いています: border: 1px solid #000000;

于 2012-05-18T22:05:50.610 に答える
0

別の回避策。CSS スタイル プロパティを入力要素に追加します: Opacity:0.99;

于 2012-05-30T18:35:15.977 に答える