我已经制作了一个Chrome扩展程序,用户可以通过点击Chrome的上下文菜单将其重要链接保存在扩展名和粘贴链接中,但是有一个错误:它不适用于Google表单。
当我在提交按钮上click
时,该网站给我一个错误you missed the field
。
这个错误的原因是什么?
来自my extension的完整内容脚本代码:
var element = null ;
document.addEventListener("contextmenu", function(event){
element = event.target;
});
var types = [
"text",
"url",
"search",
"tel",
"password",
"email",
"number",
"textarea"
];
function getCaretPosition(element){
var caretPos = 0;
/* Chrome and Firefox support */
if(!document.selection && $.inArray(element.type, types) >= 0){
/* element.selectionStart for type email give error because their is a bug in chrome */
if( element.type == 'email' || element.type == 'number' ){
caretPos = 0 ;
}else{
caretPos = element.selectionStart;
}
}
else {
/* IE support */
if(document.selection){
element.focus();
var sel = document.selection.createRange();
sel.moveStart('character', -element.value.length);
caretPos = sel.text.length;
}
}
return caretPos;
}
$(document).ready(function (){
chrome.runtime.onMessage.addListener( function (response , sender , sendResponse) {
var caretposition = getCaretPosition(element);
var initvalue = element.value ;
var first_part = initvalue.substr(0, caretposition);
var last_part = initvalue.substr(caretposition);
if(element.type == 'email' || element.type =='number'){
element.value = response.requested_link + initvalue;
} else {
var selected_text = element.value.substring(element.selectionStart, element.selectionEnd);
if ( selected_text != ''){
last_part = initvalue.substr(caretposition + selected_text.length);
}
element.value = first_part + response.requested_link + last_part;
}
});
});
答案 0 :(得分:0)
错误:当我的扩展程序在input / Textarea字段中粘贴某些内容时,我没有发送按键事件。
Soultion :我使用sendkey
事件解决了这个问题,您可以阅读有关如何触发sendkey
事件here .的信息。