2014-09-26 18 views
10

Tôi đang phát triển một ứng dụng nhỏ với tiện ích Trình duyệt SWT. Tôi đang làm nổi bật từ văn bản tìm kiếm vớiTrình duyệt SWT tập trung vào văn bản đánh dấu tiếp theo và trước đó

<a id="xyz" href=''><mark>test</mark></a> 

trong tài liệu HTML. và thay thế tất cả các từ tìm kiếm trong Văn bản HTML theo cách này để chúng tôi nhận được tất cả các từ tìm kiếm được tô sáng.

htmltext.replaceAll("(?i)"+Pattern.quote(searchword), "\\<a id='xyz' href=''> <mark>$0\\</mark></a> 

Tôi muốn thực hiện chức năng nếu tôi nhấp vào nút tiếp theo, từ được đánh dấu tiếp theo sẽ tập trung và nếu tôi nhấp vào nút trước đó, văn bản được đánh dấu trước đó sẽ được lấy nét. làm thế nào tôi có thể thực hiện lần truy cập Tiếp theo và Trước đó bằng cách sử dụng Javascript trong ứng dụng RCP Eclipse.

+0

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

+0

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

Trả lời

1

Đ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:

  1. từ khóa tìm kiếm
  2. toggling nổi bật
  3. 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()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().

Các vấn đề liên quan