Một mục mã nguồn mở trong kho dữ liệu GitHub của TopGit: happydog-intj/JsBridge, 9.9k sao, Java. android java and javascript bridge, inspired by wechat webview jsbridge
Tóm tắt dựng từ metadata GitHub của chính dự án — chưa có bài review TopGit. Trang sẽ tự động cập nhật khi bài review đầy đủ được xuất bản.
VÌ SAO CHƯA CÓ REVIEW
TopGit viết bài đầy đủ cho repo có nhiều sao nhất và được yêu cầu nhiều nhất. Trang này là snapshot trong thời gian chờ — xem README gốc ở tab READ ME.
Add com.github.lzyzsd.jsbridge.BridgeWebView to your layout, it is inherited from WebView.
Register a Java handler function so that JavaScript can call
webView.registerHandler("submitFromWeb", new BridgeHandler() {
@Override
public void handler(String data, CallBackFunction function) {
Log.i(TAG, "handler = submitFromWeb, data from web = " + data);
function.onCallBack("submitFromWeb exe, response data from Java");
}
});
JavaScript can call this Java handler method "submitFromWeb" through:
WebViewJavascriptBridge.callHandler(
'submitFromWeb'
, {'param': str1}
, function(responseData) {
document.getElementById("show").innerHTML = "send get responseData from java, data = " + responseData
}
);
You can set a default handler in Java, so that JavaScript can send messages to Java without an assigned handlerName
webView.setDefaultHandler(new DefaultHandler());
window.WebViewJavascriptBridge.doSend(
data
, function(responseData) {
document.getElementById("show").innerHTML = "responseData from java, data = " + responseData
}
);
Register a JavaScript handler function so that Java can call
WebViewJavascriptBridge.registerHandler("functionInJs", function(data, responseCallback) {
document.getElementById("show").innerHTML = ("data from Java: = " + data);
var responseData = "Javascript Says Right back aka!";
responseCallback(responseData);
});
Java can call this JavaScript handler function "functionInJs" through:
webView.callHandler("functionInJs", new Gson().toJson(user), new CallBackFunction() {
@Override
public void onCallBack(String data) {
}
});
You can also define a default handler using the init method, so that Java can send messages to JavaScript without an assigned handlerName
For example:
window.WebViewJavascriptBridge.init(function(message, responseCallback) {
console.log('JS got a message', message);
var data = {
'Javascript Responds': 'Wee!'
};
console.log('JS responding with', data);
responseCallback(data);
});
webView.send("hello");
will print 'JS got a message hello' and 'JS responding with' in webview console.
Persistent Callbacks (New Feature)
By default, callbacks are deleted after first use. However, you can now use persistent callbacks that can be reused multiple times:
Java Side
// Use persistent callback that won't be deleted after first use
webView.callHandlerPersistent("functionInJs", data, new OnBridgeCallback() {
@Override
public void onCallBack(String data) {
// This callback can be called multiple times
Log.d(TAG, "Persistent callback called: " + data);
}
});
JavaScript Side
// Use persistent callback
WebViewJavascriptBridge.callHandlerPersistent("javaHandler", data, function(response) {
// This callback can be reused multiple times
console.log("Persistent callback response: " + response);
});
// Register and manually manage persistent callbacks
var callbackId = "my_persistent_callback";
WebViewJavascriptBridge.registerPersistentCallback(callbackId, function(data) {
console.log("Persistent callback called: " + data);
});
// Remove persistent callback when no longer needed
WebViewJavascriptBridge.removePersistentCallback(callbackId);
This feature is useful when you need to maintain a long-term communication channel between Java and JavaScript, such as for real-time updates or event notifications.
This library will inject a WebViewJavascriptBridge Object to the window object.
You can listen to the WebViewJavascriptBridgeReady event to ensure window.WebViewJavascriptBridge exists, as the below code shows:
if (window.WebViewJavascriptBridge) {
//do your work here
} else {
document.addEventListener(
'WebViewJavascriptBridgeReady'
, function() {
//do your work here
},
false
);
}
Or put all JsBridge function call into window.WVJBCallbacks array if window.WebViewJavascriptBridge is undefined, this task queue will be flushed when WebViewJavascriptBridgeReady event triggered.
Copy and paste setupWebViewJavascriptBridge into your JS:
function setupWebViewJavascriptBridge(callback) {
if (window.WebViewJavascriptBridge) {
return callback(WebViewJavascriptBridge);
}
if (window.WVJBCallbacks) {
return window.WVJBCallbacks.push(callback);
}
window.WVJBCallbacks = [callback];
}
Call setupWebViewJavascriptBridge and then use the bridge to register handlers or call Java handlers:
It's the same as WebViewJavascriptBridge, which makes it easier for you to define the same behavior across different platforms between Android and iOS, while writing concise code.
License
This project is licensed under the terms of the MIT license.
Trang TopGit này là một snapshot — tab "Readme" hiển thị nguyên văn README của repo (đã bỏ link, giữ ảnh). Repo GitHub ở github.com/happydog-intj/JsBridge là nguồn chính thức.
happydog-intj/JsBridge có bao nhiêu sao?
happydog-intj/JsBridge có 9.9k sao GitHub — tải lại trang để xem số mới nhất, hoặc xem trực tiếp github.com/happydog-intj/JsBridge. TopGit phản chiếu số sao của GitHub nhưng không cam kết đến từng phút.
happydog-intj/JsBridge có phải mã nguồn mở không?
TopGit chưa ghi nhận license cho happydog-intj/JsBridge. Phần lớn repo public trên GitHub là mã nguồn mở, nhưng điều khoản khác nhau từng repo — mở file LICENSE để xác nhận.
happydog-intj/JsBridge có tag gì không?
Bản đồng bộ chưa ghi nhận topic GitHub nào cho happydog-intj/JsBridge. GitHub topics hiển thị ở thanh bên phải trang repo — đó là nơi đáng kiểm tra nhất.
happydog-intj/JsBridge có website riêng không?
TopGit chưa ghi nhận URL trang chủ cho happydog-intj/JsBridge. Phần README ở tab phía trên thường có link demo, hoặc xem mô tả GitHub của repo.
happydog-intj/JsBridge còn đang phát triển không?
Commit gần nhất trên happydog-intj/JsBridge là 1.2 năm trước (theo timestamp GitHub). Repo có 2.0k fork — một chỉ báo về mức độ quan tâm của cộng đồng.
Đọc đầy đủ README ở tab phía trên.
JsBridge có đáng để bạn bỏ thời gian?
ChatGPT, Claude và Perplexity đều đọc được trang này. Hỏi thử xem họ nghĩ gì về JsBridge.