javascript — Может ли WT представлять веб-страницы как часть главной страницы?

Обновление 3

user52875 также имеет очень хороший ответ, Может ли WT представлять веб-страницы как часть главной страницы? который использует HTML, и на самом деле это намного проще, чем возиться с JS. +1 вам хорошо, сэр.

Обновление 2

Разобрался, рабочий код ниже. Вам нужно использовать iframe в javascript, чтобы встроить другую страницу в свою. IP-адрес другого компьютера в локальной сети, на котором работает сервер WT с некоторым содержимым, я смог подключиться и просмотреть содержимое сервера WT. Кроме того, по какой-то причине iframe не может подключиться к веб-сайтам, таким как Google или Yahoo. Хотя я уверен, что есть отдельный вопрос о том, что где-то.

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

Казалось бы, для этого требуется использование фреймов JS с объектами WT. Javascript не является моей сильной стороной, но я сделал несколько встраиваний приложений с помощью команды WT doJavaScript () (Встраивание Ventus в WT а также Использование ACE с 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

Итак, я пытаюсь представить содержимое другой страницы, не покидая страницу хоста. Это возможно? Я читал документацию и просматривал галерею виджетов, но до сих пор не нашел ничего, что касается встраивания удаленного контента в вашу собственную страницу. Моя долгосрочная цель — установить привязку к IP-адресу другого ПК в той же сети и представить содержимое сервера WT, работающего на этом ПК, на моей собственной странице хоста, не покидая его. Заранее благодарю за любую помощь!

1

Решение

Здесь есть похожий вопрос и ответ на него. Надеюсь, поможет.

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

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, которое вы упомянули в своем обновлении.

1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector