it-swarm.cn

我可以禁用自动完成吗?

我最近升级到WordPress 3.0,在通过“快速编辑”(例如/wp-admin/edit.php)编辑帖子时,自动完成功能存在很多问题 - 例如,编辑标签。自动填充框通常会遮挡我正在尝试输入文本的文本框,有时在单击“更新”按钮后会“遗忘”。

有没有办法禁用自动完成?

_ update _

为了澄清,这是一个Wordpressautocomplete功能,而不是基于浏览器的one。

更新2

看起来好像我需要删除每个管理页面底部引用的“load-scripts.php”的'suggest'参数,如下所示:

<script type='text/javascript'
  src='http://www.example.com/path/to/wordpress/wp-admin/load-scripts.php?c=1&amp;load=hoverIntent,common,jquery-color,suggest,inline-edit-post'>
</script>

这似乎是由以下因素产生的:

do_action('admin_print_footer_scripts');

但是那时我失去了代码踪迹 - 任何人?

3
Bobby Jack

我有一个我测试的解决方案,它的工作原理。

标签的自动完成当前是通过对文件admin-ajax.php的ajax请求完成的。我建议的解决方案是阻止请求的处理,以便它不返回任何结果。我会做 :

function no_tag_suggest() {
    if( DOING_AJAX == true && $_GET['action'] == 'ajax-tag-search' && $_SERVER['HTTP_REFERER'] == admin_url( 'edit.php' ) ) {
        die;
    }
}    
add_action('admin_init', 'no_tag_suggest');

上一个功能验证:

  1. 如果是ajax请求
  2. 如果动作参数是'ajax-tag-search'
  3. 如果referer url是'/wp-admin/edit.php'页面

如果满足这3个条件,则不会返回任何结果,也不会显示标记建议。

如果您想从所有页面中删除此自动填充,而不是仅删除'wp-admin/edit.php',您可以执行以下操作:

function no_tag_suggest() {
    if( DOING_AJAX == true && $_GET['action'] == 'ajax-tag-search' ) ) {
        die;
    }
}    
add_action('admin_init', 'no_tag_suggest');

我建议你看一下'admin-ajax.php'的代码来查看那里的所有'action'参数,因此你可以用类似的方法杀死所有的ajax请求。

我希望我的解释清楚。如果您想了解更多细节或有任何疑问,请随时与我联系。

赏金给我? :)

5
sorich87

您可以在浏览器中禁用它,也可以在WP source周围路由,并在违规框中删除此autocomplete属性:

<input autocomplete="off" />

或者,您可以使用greasemonkey修改页面以按上述方式禁用自动完成。

1
Ben Everard

你可以使用这个插件:

Tag Uncomplete

http://wordpress.org/extend/plugins/tag-uncomplete/

它适用于拥有大量标签术语的人,但它完全符合您的要求

0
Tom J Nowell

您可以禁用来自服务器的响应, 如sorich87已解释 ,或者您可以尝试(更复杂)禁用启动AJAX请求的javascript的方法。如果你只是删除 suggest library ,调用suggest函数的 variousplaces 可能会失败,所以你应该用一个什么也不做的存根函数替换它。

0
Jan Fabry

您可以在html元素中传递attr

$('#register_username').attr('autocomplete','off');
0
user57366

自动完成 _是_ 浏览器功能,但它是一个输入字段参数。

如果一个网站必须符合PCI合规标准,如果在输入字段中启用了自动完成功能,它将失败PCI - 无论任何人的浏览器。

0
Christopher Eller