Điều này được giải quyết tốt nhất bằng cách kết hợp JavaScript với mã Java. Nó phụ thuộc vào loại nội dung HTML mà bạn sẽ xử lý, nếu nó là trạng thái (ví dụ: không thể tải lại), động với nhiều mã JS hoặc đồng bằng tĩnh. Trong hầu hết các trường hợp, giải pháp tốt nhất sẽ liên quan đến hầu hết logic được viết bằng JS và chỉ mã tối thiểu trong Java để liên kết các hành động JS với GUI SWT.
Có một vài điều bạn cần phải thực hiện:
- từ khóa tìm kiếm
- toggling nổi bật
- Toggling nổi bật từ một từ khác
1. Tìm: bạn nhận ra rằng bạn sẽ không thể tìm kiếm các từ trải qua nhiều phần tử HTML, như W<span>o</span>rd
? Nếu đó là ok thì bạn chỉ có thể tìm kiếm và thay thế từ Java như bạn làm bây giờ. Tôi sẽ đi để gắn thẻ riêng từng từ phù hợp với id: <span id="match1">
và ghi nhớ có bao nhiêu kết quả phù hợp đã được tìm thấy.
Bạn cũng có thể thực hiện tìm kiếm như vậy trên JS cũng như thêm một hàm lặp qua DOM và tìm kiếm văn bản cụ thể và kết thúc nó bằng một đối tượng DOM khác.
2. Làm nổi bật nổi bật: Tốt nhất nên thực hiện trong JavaScript. Nối vào HTML của bạn một đoạn mã JS để chuyển đổi kiểu phần tử DOM. Một cái gì đó như: '
function highlight(id) {
document.getElementById(id).className = 'highlighted'
}
Bạn sẽ có thể gọi đây là JS từ SWT bằng cách gọi swtBrowser.execute("highlight('match1')")
Hơn nữa bạn nên thực hiện chức năng đó mà mất đi làm nổi bật.
3. Toggling làm nổi bật giữa các thành phần: Điều này có thể được thực hiện cả ở bên Java và bên JS. Tôi có lẽ sẽ đi với JS và thêm hai chức năng hơn: highlightNext()
và highlightPrev()
mà chỉ cần gọi highlight()
chức năng với id thích hợp. Sau đó, trong Java, bạn có thể tạo các nút SWT gọi các hàm JS thông qua SWTBrowser.execute().
Nguồn
2014-12-07 09:31:02
Bạn có thể bắt đầu bằng cách đăng mã mà bạn sử dụng để làm nổi bật kết quả tìm kiếm. – Baz
Ok, nhưng làm thế nào để bạn thêm các thẻ 'đánh dấu' vào html của bạn? – Baz