Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 修改表单中特定字段的最佳方式是什么?_Javascript_Forms_Google Chrome Extension_Google Calendar Api - Fatal编程技术网

Javascript 修改表单中特定字段的最佳方式是什么?

Javascript 修改表单中特定字段的最佳方式是什么?,javascript,forms,google-chrome-extension,google-calendar-api,Javascript,Forms,Google Chrome Extension,Google Calendar Api,具体来说,我想做的是,为了我自己的目的,修改Google日历字段条目中的一个字段。也就是说,该位置几乎总是四个位置之一,但谷歌日历的设置方式并不跟踪频繁输入的信息,每次都要写完整地址或保存一个带有四个地址的记事本文件给C&P有点烦人 我想理想的扩展或脚本会自动检测我正在填写Google日历事件条目,并将位置字段更改为包含我经常使用的四个地址以及其他选项的下拉列表 另一种可能是某种bookmarklet或一组4,用于填充中的位置字段 我真的不知道从哪里开始,或者哪种方法会更好。见鬼,可能还有第三种

具体来说,我想做的是,为了我自己的目的,修改Google日历字段条目中的一个字段。也就是说,该位置几乎总是四个位置之一,但谷歌日历的设置方式并不跟踪频繁输入的信息,每次都要写完整地址或保存一个带有四个地址的记事本文件给C&P有点烦人

我想理想的扩展或脚本会自动检测我正在填写Google日历事件条目,并将位置字段更改为包含我经常使用的四个地址以及其他选项的下拉列表

另一种可能是某种bookmarklet或一组4,用于填充中的位置字段

我真的不知道从哪里开始,或者哪种方法会更好。见鬼,可能还有第三种方法更优越


PS:如果这在Firefox或其他浏览器中比在Chrome浏览器中更容易/更有效,那也不错。

我会选择bookmarklets。以下是一个潜在的URL,用于设置当前Google日历页面的地址,其中输入的id为:1u:

javascript:document.getElementById(':1u').value='123 Some st.'; void(0);
我会为你的4个地址中的每一个写上类似于上述URL的书签,然后将它们放入一个易于访问的文件夹中,并在每次你想填充该地址时使用它们

更新:

由于ID发生了变化,因此可以通过类名获取它。但是,如果在Where字段更改之前类更改或输入数更改,则必须更新链接:

javascript:document.getElementsByClassName('textinput')[1].value='123 Some st.'; void(0);
更新2:

显然,当保存日历项时,谷歌不考虑文本框的当前值。我通过在文本框的值更新后手动触发“更改”事件修复了这个问题。以下内容目前在Firefox中可用:

javascript:var a=document.getElementsByClassName('textinput')[1];a.value='123 Some st.';var e=document.createEvent("HTMLEvents");e.initEvent('change',true,true);a.dispatchEvent(e);void(0);

我会选择书签。以下是一个潜在的URL,用于设置当前Google日历页面的地址,其中输入的id为:1u:

javascript:document.getElementById(':1u').value='123 Some st.'; void(0);
我会为你的4个地址中的每一个写上类似于上述URL的书签,然后将它们放入一个易于访问的文件夹中,并在每次你想填充该地址时使用它们

更新:

由于ID发生了变化,因此可以通过类名获取它。但是,如果在Where字段更改之前类更改或输入数更改,则必须更新链接:

javascript:document.getElementsByClassName('textinput')[1].value='123 Some st.'; void(0);
更新2:

显然,当保存日历项时,谷歌不考虑文本框的当前值。我通过在文本框的值更新后手动触发“更改”事件修复了这个问题。以下内容目前在Firefox中可用:

javascript:var a=document.getElementsByClassName('textinput')[1];a.value='123 Some st.';var e=document.createEvent("HTMLEvents");e.initEvent('change',true,true);a.dispatchEvent(e);void(0);

看起来你知道该怎么做了,书签应该可以完成这项工作。你知道怎么写书签吗?不知道。。。我相信我可以通过谷歌搜索找到答案,你认为这比尝试编写扩展或其他选项要好吗?因此我有点相信解决方案是一个bookmarklet,但where字段的ID在每个事件上都会发生变化。是否最好将此标记为关闭并提出新问题,或编辑此问题以更恰当地反映我需要帮助的地方?@aslum更新了基于“textinput”类名的解决方案。不保证将来兼容,所以如果谷歌更新他们的网站,你可能不得不改变它。看起来你知道该怎么做,一个书签就可以了。你知道怎么写书签吗?不知道。。。我相信我可以通过谷歌搜索找到答案,你认为这比尝试编写扩展或其他选项要好吗?因此我有点相信解决方案是一个bookmarklet,但where字段的ID在每个事件上都会发生变化。是否最好将此标记为关闭并提出新问题,或编辑此问题以更恰当地反映我需要帮助的地方?@aslum更新了基于“textinput”类名的解决方案。不保证将来兼容,所以如果谷歌更新他们的网站,你可能不得不更改它。奇怪的是,对我来说,id是:o7。知道为什么不一样吗?好的,所以每次我创建新事件时ID都会改变。我创建了第二个事件,这次的id是:pp。你知道怎么处理吗?@aslum有趣。我有几个gmail帐户,看起来每个帐户的id都不一样,但在不同浏览器中都是一致的。我猜Google使用用户帐户以某种方式动态生成页面的id。@aslum Oops,刚刚看到你的第二条评论。这比我最初想象的要难。看来主要的问题是找到一种可靠的方法来处理where输入。@aslum-Man,谷歌尽其所能让它不起作用,不是吗;我找到了一个解决方法,在设置值后触发“change”事件。查看我上次更新的书签URL示例。奇怪,对我来说,id是:o7。知道为什么不一样吗?好的,所以每次我创建新事件时ID都会改变。我创建了第二个事件和这个ti
我的id是:pp。知道怎么处理吗?@aslum有趣。我有几个gmail帐户,看起来每个帐户的id都不一样,但在不同浏览器中都是一致的。我猜Google使用用户帐户以某种方式动态生成页面的id。@aslum Oops,刚刚看到你的第二条评论。这比我最初想象的要难。看来主要的问题是找到一种可靠的方法来处理where输入。@aslum-Man,谷歌尽其所能让它不起作用,不是吗;我找到了一个解决方法,在设置值后触发“change”事件。有关示例bookmarklet URL,请参见我的上次更新。