早上好,
我一直在开发和维护一个包含WebView部分的Cocoa应用程序。它是针对10.5 SDK构建的,以保持PPC兼容性。使用最新的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"/>
我玩过“背景颜色”风格,还玩了一些我发现的here没有太多运气的webkit样式。奇怪的是,这个页面通常通过Safari显示,但不是通过Cocoa WebView。有没有人对要尝试的事情有任何建议?
答案 0 :(得分:4)
我们的应用遇到了同样的事情,所以我做了一些挖掘。看起来WebKit已更新为使用NSTextFieldCell绘制字段背景而不是旧的私有API:
最后一个版本看起来与发布的版本最接近,但并不完全正确(WebCoreTextFieldCell缺少WebCore二进制文件)。由于10.7.4来源还没有完成,所以我们假设这已经足够了。
重要的一点是NSTextFieldCell被设置为使用[NSColor clearColor]绘制其背景。当然,期望的效果是使其呈现透明而不掩盖其下方的内容。这假定合成模式设置为NSCompositeSourceOver。
不幸的是,在10.6之前,NSTextFieldCell使用了NSCompositeCopy [4]。通过检查SDK版本实现了与早期应用程序的向后兼容性,这意味着与早期SDK链接的应用程序实际上最终会复制清晰颜色而不是合成它。这最终导致了可怕的黑色混乱。
既然已经理解了这个问题,那么我们就可以了解事情的建议&#34;部分。以下是一些想法:
我肯定会选择最后一个选项。
答案 1 :(得分:3)
也许稍微安全一点,我发现在输入元素样式中添加-webkit-appearance: none;
也可以。
答案 2 :(得分:2)
全部。作为临时解决方法,请为您的文本框设置边框样式。这对我有用:border:1px solid#000000;
答案 3 :(得分:0)
另一种解决方法。将一个css样式属性添加到input元素: 不透明度:0.99;