JQuery-在第三方表单上预填充表单字段



我的网页上有一个Netresults表单,需要预先填充。表单是用javascript插入到页面中的,因此我无法在源代码中看到表单字段。

如果表单在我的页面上,我会使用下面的代码,但由于不是,我不知道如何定位字段。有人能帮忙吗?

var keywords = getUrlParameter('keywords');
$('input[name=netres-keywords]').val(keywords);

netresults表单插入了以下代码:

(function() {
var $__MAForm;
($__MAForm =function(){
if(typeof($__MA)=="undefined"){
return window.setTimeout($__MAForm,50);
}else{
$__MA.addMAForm("43788303-2b62-4774-ad0f-63542e3ed92a", "forms.example.com");
}
})();
})();

这可能需要使用突变观测器。

突变观察器将检查DOM的更改(添加的元素等),我们可以使用它来触发事件。每当向<body>添加新的<form>元素时,下面的代码都会更改名称为netres-keywords的输入的值。

在本文底部的示例JSFiddle中,我创建了一个按钮,用于模拟添加到页面中的表单。正如您所看到的,文本框将预先填充。

示例JSFIDDLE

$(document).ready(function() {
var keywords = "this is a test keyword";
var formCount = $("form").length;
var observer = new MutationObserver(function() {
var newFormCount = $("form").length;
if (newFormCount > formCount) {
$('input[name=netres-keywords]').last().val(keywords);
}
});
$("button").click(function() {
$form = $("<form>").html("<h1>New form:</h1><input type='text' name='netres-keywords'>");
$("body").append($form);
});

var observerConfig = {
attributes: true, 
childList: true, 
characterData: true 
};

var targetNode = document.body;
observer.observe(targetNode, observerConfig);
});
form {
padding: 10px;
border: 1px solid red;
margin-bottom: 20px;
}
h1 {
margin: 0;
padding: 0;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button>
SIMULATE ADDING FORM
</button>
<br>
<br>

最新更新