最近积攒的一点开源资源

>> mono项目中的WebBrowser控件,支持Gecko/WebKit两个核心。
Motivation: WebBrowser control for MWF/动力:MWF中的WebBrowser
注:
1. MWF指的是Mono WinForms吗?
2. 如果不是COM扩展,应该是不支持window.external扩展了吧

>> Android SDK: Embed a WebView with the WebKit Engine
Android SDK: Embed a WebView with the WebKit Engine
注:
1.这个已经由@ln_bo 测试过。不过在某些版本的国产平板上apk包出现解析错误,有可能是SDK版本的问题吧。过一段时间正式做技术准备的时候再详细测试。
2.需要参考的资料:
2.1 public class WebView
2.2 Web Apps Overview
3.看这段代码中是最后一个类MyWebChromeClient,应该是可以支持callback的。WebViewDemo.java

>>stackato
ActiveState公司悄悄出品的私有PaaS。它基于CloudFoundry
注:
1. Architecture Diagram: Stackato as a micro cloud

2. Architecture Diagram: Stackato on vSphere or hosted with an IaaS

3. 它还可以提供一个Sandbox,详细内容看这里:
4. 或者下载一份虚拟机映像,服务器版本的VM是基于Ubuntu Linux Server 10.04.3 LTS的,需要64位器,4G以上内容,并且需要至少3G以上的磁盘空间。
5.文档很详细Quick Start。安装好虚拟机之后直接http访问访问bridge ip也会给出Stackato Document
6. 开发支持Clojure/Java/Node.js/Perl/PHP/Python/Ruby
7. Copy-cat的话就看这个:github stackato-samples或者Sample Applications。后面的直接可以看到例子和README说明。

How to scroll to desired element in WebBrowser with Delphi

在Delphi里控制浏览器成为一个需求的原因是有很多文档的html文件都特别巨大,比如有100个章节,想要控制浏览器滚动到指定的章节就成为一件特别有意思的事。
要做这样一件事,很简单,只需要两步,即:
1. 找到它/Found the element
[code language=”pascal”]
uses
MSHTML, SysUtils, Variants;

function GetElementById(const Doc: IDispatch; const Id: string): IDispatch;
var
Document: IHTMLDocument2; // IHTMLDocument2 interface of Doc
Body: IHTMLElement2; // document body element
Tags: IHTMLElementCollection; // all tags in document body
Tag: IHTMLElement; // a tag in document body
I: Integer; // loops thru tags in document body
begin
Result := nil;
// Check for valid document: require IHTMLDocument2 interface to it
if not Supports(Doc, IHTMLDocument2, Document) then
raise Exception.Create(‘Invalid HTML document’);
// Check for valid body element: require IHTMLElement2 interface to it
if not Supports(Document.body, IHTMLElement2, Body) then
raise Exception.Create(‘Can”t find element’);
// Get all tags in body element (‘*’ => any tag name)
Tags := Body.getElementsByTagName(‘*’);
// Scan through all tags in body
for I := 0 to Pred(Tags.length) do
begin
// Get reference to a tag
Tag := Tags.item(I, EmptyParam) as IHTMLElement;
// Check tag’s id and return it if id matches
if AnsiSameText(Tag.id, Id) then
begin
Result := Tag;
Break;
end;
end;
end;
[/code]
2. 滚到它/do scroll
[code language=”pascal”]
function ScrollToElement(wb: TEmbeddedWB; id: String): Boolean;
var
Elem: IHTMLElement;
begin
Elem := GetElementById(wb.Document, id) as IHTMLElement;
if Assigned(Elem) then
wb.ScrollToPosition(0, Elem.offsetTop);
end;
[/code]
references:
1. Finding HTML elements by ID in a TWebBrowser document
2. 源码已经发到我在code.google.com上的小工具项目了,直接看吧/You could down the full source code at my pumpkin project hosted on code.google.com
3. Scroll view to Anchor position