void OnMode(wxCommandEvent& evt);
     void OnZoomLayout(wxCommandEvent& evt);
     void OnHistory(wxCommandEvent& evt);
+    void OnRunScript(wxCommandEvent& evt);
 
 private:
     wxTextCtrl* m_url;
     m_tools_enable_history = m_tools_history_menu->AppendCheckItem(wxID_ANY, _("Enable History"));
     m_tools_history_menu->AppendSeparator();
 
-    wxMenuItem* history = m_tools_menu->AppendSubMenu(m_tools_history_menu, "History");
+    m_tools_menu->AppendSubMenu(m_tools_history_menu, "History");
 
     //Create an editing menu
     wxMenu* editmenu = new wxMenu();
     m_tools_menu->AppendSeparator();
     m_tools_menu->AppendSubMenu(editmenu, "Edit");
 
+    wxMenuItem* script =  m_tools_menu->Append(wxID_ANY, _("Run Script"));
+
     //By default we want to handle navigation and new windows
     m_tools_handle_navigation->Check();
     m_tools_handle_new_window->Check();
             wxCommandEventHandler(WebFrame::OnRedo),  NULL, this );
     Connect(m_edit_mode->GetId(), wxEVT_COMMAND_MENU_SELECTED,
             wxCommandEventHandler(WebFrame::OnMode),  NULL, this );
+    Connect(script->GetId(), wxEVT_COMMAND_MENU_SELECTED,
+            wxCommandEventHandler(WebFrame::OnRunScript),  NULL, this );
 }
 
 void WebFrame::OnAnimationTimer(wxTimerEvent& WXUNUSED(evt))
     m_browser->LoadHistoryItem(m_histMenuItems[evt.GetId()]);
 }
 
+void WebFrame::OnRunScript(wxCommandEvent& WXUNUSED(evt))
+{
+    wxTextEntryDialog dialog(this, "Enter JavaScript to run.", wxGetTextFromUserPromptStr, "", wxOK|wxCANCEL|wxCENTRE|wxTE_MULTILINE);
+    if(dialog.ShowModal() == wxID_OK)
+    {
+        m_browser->RunScript(dialog.GetValue());
+    }
+}
+
 /**
   * Callback invoked when a loading error occurs
   */