WT可以将网页作为主页的一部分吗?

时间:2013-07-29 20:46:28

标签: javascript c++ web embedding wt

更新3

user52875也有一个很好的答案,Can WT present web pages as part of the host page?使用HTML,实际上比搞乱JS更容易。给你好+1先生。

更新2

想出来,工作代码如下。您需要在javascript中使用iframe来嵌入您自己的另一个页面。 IP地址是本地网络上运行具有某些内容的WT服务器的另一台PC,我能够连接并查看WT服务器的内容。此外,由于某种原因,iframe无法连接到浏览网站,如谷歌或雅虎。虽然我确信在某个地方有一个单独的问题。

WText* text = new WText(root);
string command = string("var ifr") + " = document.createElement('iframe');" + 
                 //"ifr.src = 'http://javascript.info';" +         //Works
                 //"ifr.src = 'http://www.escapistmagazine.com';" +//Works
                 //"ifr.src = 'http://escapistmagazine.com';" +    //Works
                 //"ifr.src = 'http://google.com';" +              //Doesn't work
                 //"ifr.src = 'http://www.google.com';" +          //Doesn't work
                 "ifr.src = 'http://12.3.45.678:8080/';" +         //Works
                 "ifr.width = 1500;" +
                 "ifr.height = 700;" +
                 "document.body.appendChild(ifr);";
text->doJavaScript(command);

更新1

这似乎需要在WT对象中使用JS iframe。 Javascript不是我的强项,但我使用WT doJavaScript()命令(Embedding Ventus in WTUsing ACE with WT)完成了一些应用程序的嵌入。如果我找到在WT中嵌入页面的正确方法,我将进一步更新帖子。提前感谢您的帮助。

WText* text = new WText(root);
string command = ""; //TODO: Proper creation and use of JS iframe.
text->doJavaScript(command);

原帖

所以,我正在尝试创建一个小型WT应用程序,其中我有一组锚点,或一个文本框和一个键入和切换页面的按钮。基本设置如下:

WContainerWidget* root = wApp->root();

WAnchor* Google = new WAnchor("http://www.google.com/", "Google", root);
root->addWidget(new Wt::WBreak());

WAnchor* Yahoo = new WAnchor("http://www.yahoo.com/", "Yahoo", root);
root->addWidget(new Wt::WBreak());

Wt::WLineEdit* GotoBar = new Wt::WLineEdit(root);
Wt::WPushButton* GotoButton = new Wt::WPushButton("Goto address", root);

//TODO: Some kind of widget that will present the content of the anchors
//      or the GotoBar

所以,我想要做的是在不离开主页的情况下呈现不同页面的内容。这可能吗?我一直在阅读文档和浏览小部件库,但到目前为止还没有发现任何与将远程内容嵌入到您自己的页面相关的内容。我的长期目标是让锚点连接到同一网络上另一台PC的IP地址,并在我自己的主机页面中显示在该PC上运行的WT服务器的内容而不会离开它。在此先感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

这里有一个类似的问题和答案。希望它有所帮助。

http://www.mail-archive.com/witty-interest@lists.sourceforge.net/msg01578.html

答案 1 :(得分:1)

这样做:

WText *myIframe = new WText(this);
// Very important: if your url comes from a user, sanitize it or you create a
// very nice XSS attack vector. AFAIK not all functions required are publicly
// available in Wt. XHTMLUnsafeText switches of Wt's built-in XSS filer, which
// filters out iframes.
myIframe->setText("<iframe src='http://12.34.56.78:8080/' width=100 height=100></iframe>", XHTMLUnsafeText);

使用此方法,您还可以删除iframe,这是您在更新中提到的基于JS的解决方案无法实现的。