在以下示例中,我只获得一个警告框.我读到焦点是在JavaScript代码执行之前.有没有办法让这个工作?
<input id="i" type="text" autofocus onfocus="alert(1)">
<script type="text/javascript">
document.getElementById('i').addEventListener('focus', function() {
alert(2);
}, false);
</script>
Run Code Online (Sandbox Code Playgroud)
(我只在Safari中测试过这个)
编辑:我显然可以这样做(Prototypejs选择器):
var autofocusElement = $$('input[autofocus]')[0];
callListener(autofocusElement);
Run Code Online (Sandbox Code Playgroud)
但与仅添加事件监听器相比,它看起来很丑陋.
编辑:
不要担心自动聚焦属性缺乏浏览器支持.它很容易解决,就像我在下面的链接中所做的那样.我可以看到,这个问题也是最好的解决方案.我的问题是,如果我能够比不必手动调用监听器那么难看.
http://jsfiddle.net/tellnes/7TMBJ/3/
它在Firefox 3.6中运行良好,因为Firefox不支持自动对焦.但是在支持自动对焦的Safari中,并不是所谓的事件.
在iphone中,我想计算从相机到主体的距离.
我想知道也许iphone相机的"主动自动对焦"为我提供了与主题的距离(兴趣点)?
提前谢谢了.
ps家伙,如果你认为这是不可能的PLZ让我知道;)
我从事视频录制工作; 一切都有效,除了要求连续对焦.这就是我所做的(在surfaceCreated和surfaceChanged中都尝试过但没有成功):
camera = Camera.open();
camera.setPreviewDisplay(holder);
Parameters parameters = camera.getParameters();
Run Code Online (Sandbox Code Playgroud)
那我也是
parameters.setFocusMode(Parameters.FOCUS_MODE_CONTINUOUS_VIDEO);
Run Code Online (Sandbox Code Playgroud)
要么
parameters.set("focus-mode", "continuous-video");
Run Code Online (Sandbox Code Playgroud)
两者都应该做同样的事情; 然后我用参数设置
camera.setParameters(parameters);
Run Code Online (Sandbox Code Playgroud)
这最后一行总是崩溃!所以我想念一些东西吗?
顺便说一句,我测试了Desire HD,Galaxy S,Galaxy Tab 7和10.1等新设备,它们必须支持连续自动对焦; 至少他们的内置相机应用支持它.
正如标题指出:将重点仍然是在表单控件设置autofocus="autofocus"
,即使它们与隐藏display: none;
或visibility: hidden;
?
下面是我通过ajax加载的表单.当我直接运行表单页面然后自动对焦c_name在Firefox中工作但是当加载ajax时它不会!虽然它与opera/safari/chrome一起工作正常!
<form action="client_entry_action.php" method="post" id="client_entry_form" name="client_entry_form">
<fieldset id="client_info_1">
<label for="c_name">Name:</label>
<input type="text" name="c_name" required placeholder="Name" autofocus="autofocus" />
<label for="c_phone">Phone Number:</label>
<input type="tel" name="c_phone" required placeholder="Mobile/Phone Number" />
<label for="c_email">Email:</label>
<input type="email" name="c_email" required placeholder="email@example.com" />
<label for="c_address">Address:</label>
<textarea name="c_address" ></textarea>
</fieldset>
<fieldset id="client_info_2">
<label for="c_info">Additional notes:</label>
<textarea name="c_info" ></textarea>
<input type="submit" name="add_client" value="Add Client" />
</fieldset>
</form>
Run Code Online (Sandbox Code Playgroud) 一个android.widget.EditText可以通过2个原因获得焦点,因为我知道:
案例1.最终用户按目的触摸编辑文本.
案例2.系统自动提供编辑文本.
我的问题是: 如何才能检测到案例2?(事件监听器?)
我想要检测案例2的原因是:我想设置当前位置是编辑文本通过案例2获得焦点的最后位置.
EditText.setOnFocusChangeListener适用于case1,case2所以看来我不能使用它.
谢谢!
使用HTML5属性"autofocus"对于网页来说非常有用.但是,在Android设备上使用 - 例如 - Firefox(37.0.1)会导致在页面加载时显示软键盘.
<input type="text" name="q" autofocus>
Run Code Online (Sandbox Code Playgroud)
软键盘占用了大量空间,因此我想阻止它打开.同时,自动对焦是我们普通屏幕/设备所需的非常有用的功能.
我尝试在页面加载时通过jQuery删除基于屏幕宽度的"自动对焦"属性,但是,为时已晚.此时,浏览器显然已经接受了该属性并显示了软键盘:
$(function(){
if (window.innerWidth < 600)
$('*[autofocus]').removeAttr('autofocus');
});
Run Code Online (Sandbox Code Playgroud)
有什么建议?
MDL在页面加载时升级其组件,因此<input>
使用autofocus
属性会失去其焦点.我希望在MDL完成重新渲染后将注意力集中在此输入上.
我正在尝试收听一些页面就绪事件(codepen):
$('input#srch').one('componentDidUpdate', function(){console.log('ready')});
Run Code Online (Sandbox Code Playgroud)
既不与$(document)
也不$(document.body)
与$('.mdl-layout')
选择者一起工作.
我用谷歌搜索了一些类似的事件,但没有运气,我错过了什么?
当然我可以使用,setTimeout
但我不认为这应该是一个解决方案
谢谢.
jquery javascript-events autofocus material-design material-design-lite
嗨,我正在使用camera2basic示例来实现我的camera2应用程序.我找不到任何好的例子来实现触摸以使用camera2 api进行聚焦.目前我用于触控的代码是:
private void setFocusArea(MotionEvent event) {
if (mCameraId == null) return;
CameraManager cm = (CameraManager)getActivity().getSystemService(Context.CAMERA_SERVICE);
CameraCharacteristics cc = null;
try {
cc = cm.getCameraCharacteristics(mCameraId);
} catch (CameraAccessException e) {
e.printStackTrace();
}
int myX = (int)event.getX();
int myY = (int)event.getY();
MeteringRectangle focusArea = new MeteringRectangle(myX-100,myY-100,200,200,MeteringRectangle.METERING_WEIGHT_DONT_CARE);
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AF_TRIGGER, CameraMetadata.CONTROL_AF_TRIGGER_CANCEL);
try {
mCaptureSession.capture(mPreviewRequestBuilder.build(), mCaptureCallback,
mBackgroundHandler);
// After this, the camera will go back to the normal state of preview.
mState = STATE_PREVIEW;
} catch (CameraAccessException e){
// log
}
if (isMeteringAreaAESupported(cc)) {
mPreviewRequestBuilder.set(CaptureRequest.CONTROL_AE_REGIONS, …
Run Code Online (Sandbox Code Playgroud) 我正在创建一个XML Form Reader.每种控件类型都是用户控件.但是,当用户点击不是聚焦控件(即TextBlock)的表单上的某个位置时,表单会将焦点跳转到页面中的第一个可聚焦控件.(即TextBox)
这会将页面滚动到顶部(通常),使用户远离他们正在处理的内容.
我在焦点事件周围尝试了很多不同的事情,但是如何解决这个问题却遇到了障碍.
处理这个问题的最佳方法是什么?任何提示或技巧将不胜感激.
谢谢
编辑(更多信息)
"MASTER"页面有一个 StackPanel
<StackPanel x:Name="pnlFormMain" ScrollViewer.BringIntoViewOnFocusChange="False"/>
Run Code Online (Sandbox Code Playgroud)
对于xml表单中的每个控件,UserControl将添加到stackpanel.
<UserControl.Resources>
<Storyboard x:Name="Show">
<DoubleAnimation Duration="0:0:0.6" To="1" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="_WidgetMaster" d:IsOptimized="True"/>
</Storyboard>
<Storyboard x:Name="Hide">
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.Opacity)" Storyboard.TargetName="_WidgetMaster" d:IsOptimized="True"/>
</Storyboard>
</UserControl.Resources>
<Grid x:Name="grdInput" ScrollViewer.BringIntoViewOnFocusChange="False">
<Grid.RowDefinitions>
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
<RowDefinition Height="auto" />
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="*" />
</Grid.ColumnDefinitions>
<Grid Grid.Column="0" Grid.Row="0" ScrollViewer.BringIntoViewOnFocusChange="False">
<Grid.ColumnDefinitions>
<ColumnDefinition Width="auto" />
<ColumnDefinition Width="auto" />
</Grid.ColumnDefinitions>
<!-- label -->
<TextBlock x:Name="lblLabel" Text="Label" Grid.Column="0" VerticalAlignment="Center" Margin="3,6,5,5" TextWrapping="Wrap" />
<!-- …
Run Code Online (Sandbox Code Playgroud)