tôi mở một cửa sổ sử dụng javascript window.open()
Thay đổi Chọn Menu tùy chọn lập trình trong con inAppBrowser
Cửa sổ mở ra có đoạn mã sau:
jQuery(document).ready(function(){
jQuery("#lang").change(function(){
var lname = jQuery(this).val().split("-");
window.location = '<?php echo JURI::root();?>index.php?lang='+lname[0];
alert(lname[0]);
alert('lang '+lang);
});
Bây giờ mã này được kích hoạt khi 'lang' chọn thay đổi thực đơn. Tôi mở cửa sổ lập trình bằng cách sử dụng window.open
và tôi đã quản lý dữ liệu vào các trường cửa sổ bằng cách sử dụng Window.executeScript()
. Ví dụ: điều này phù hợp với tôi:
loginWindow.executeScript({
code: "jQuery('input#username').val('10500050')"
});
Tuy nhiên, khi tôi cố gắng tuân theo cùng một logic để thay đổi mục đã chọn trong chọnMenu gọi là 'lang' cho cùng một cửa sổ, tôi thất bại.
Nỗ lực
Tôi đã thử tất cả các dòng sau trong executeScript
;
code: "$('#lang').val('ms')"
code: "jQuery('#lang option[value=ms]').prop('selected', true)"
code: "jQuery('#lang').selectmenu('value', 'ms')"
cập đến ở bên cạnh executeScript
để kích hoạt sự thay đổi
code: "$('#lang').trigger('change')"
code: "$('#lang').selectmenu('refresh', true)"
code: "jQuery('#lang').selectmenu('refresh')"
code: "jQuery('#lang').selectmenu('change')"
code: "$('#lang').change()"
Không ai trong số họ giúp đỡ. Tôi không chắc liệu tôi có nên kết hợp chúng trong một số executeScript
hay không. Tôi không biết làm thế nào để làm điều đó. Cửa sổ mở ra từ miền khác.
Tôi có thiếu gì đó ở đây không?
Toàn bộ mã trên mặt mở như sau:
loginWindow.addEventListener('loadstop', function() {
alert('test');
var loop = setInterval(function() {
loginWindow.executeScript({
code: "jQuery('input#username').val('10500050')"
},
function(values) {
var give = values[ 0 ];
if (give) {
clearInterval(loop);
giveMeUsername();
}
});
loginWindow.executeScript({
code: " jQuery('input#name').val('10500050')"
},
function(values) {
var give = values[ 0 ];
if (give) {
clearInterval(loop);
giveMeUsername();
}
});
loginWindow.executeScript({
//code: "$('#lang').val('zh')"
//code: "jQuery('#lang option[value=ms]').prop('selected', true)"
code: "jQuery('#lang').selectmenu('value', 'ms')"
//code: "localStorage.setItem('lan', 'ms')"
},
function(values) {
var give = values[ 0 ];
if (give) {
clearInterval(loop);
giveMeUsername();
}
});
loginWindow.executeScript({
//code: "$('#lang').trigger('change')"
//code: "$('#lang').selectmenu('refresh', true)"
//code: "jQuery('#lang').selectmenu('refresh')"
//code: "jQuery('#lang').selectmenu('change')"
code: "$('#lang').change()"
},
function(values) {
var give = values[ 0 ];
if (give) {
clearInterval(loop);
giveMeUsername();
}
});
});
});
Hai executeScript
tốt công việc đầu tiên. Nhưng cuối cùng hai (phần SelectMenu) không hoạt động. Không có gì xảy ra.
CẬP NHẬT
Khi thêm mã này vào cửa sổ chính nó, nó hoạt động và chọn giá trị hộp được thay đổi:
jQuery("#lang option[value='zh-TW']").attr("selected","selected");
jQuery('#lang').change();
Tuy nhiên, khi tôi thêm nó bên executeScript
trong cửa sổ cha mẹ (mở), nó không hoạt động!
Bạn có thể đặt tất cả các cuộc gọi thực thi thos cùng nhau bằng cách tách các lệnh bằng dấu chấm phẩy. Tôi không nghĩ rằng điều này sẽ giải quyết vấn đề anyway. – jlreymendez
@jlreymendez bán kết tràng không có tác dụng đối với tôi, nhưng dấu phẩy đã hoạt động. Cảm ơn bạn đã chỉ ra khả năng – Hawk